Docker概述及安装

root
233
文章
0
评论
2020年5月6日15:14:23 评论 3702字阅读12分20秒

Docker介绍

Docker是一种管理容器的软件工具

主要分为三部分:

  • image镜像

是一种特殊的文件系统,但是不包含动态数据,构建好以后不会被改变

  • container容器

镜像的实质是文件系统,容器的实质是进程,容器的进程和宿主机的进程不一样,它的进程是运行在独立的命名空间,因此容器可以有自己的root文件系统,自己的网络配置,自己的进程空间等,容器的进程运行在一个独立的空间,做和宿主机隔离的

容器存储的生存周期和容器一样,容器消亡时,容器存储层也会消失,按照Docker最佳实践的要求,容器不应该向仓储层放数据,容器层需要保持无状态

所有文件的写入操作,都应该使用数据卷或者绑定宿主机目录,这样跳过存储层,直接对宿主机进行存储

  • repostory仓库

如果镜像构建完成后,就可以很容易进行使用,但是其他服务器想要使用这个镜像,我们就需要集中存储,集中分发镜像的服务,Docker Registry就是这样的一个服务

一个Docker Register可以包含多个仓库,每个仓库包含多个标签,每个标签对应一个镜像

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应软件的各个版本

仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务

Register

  • 用户认证
  • 镜像的索引
  • image存储

Linux容器技术vs 虚拟化

全虚拟化技术:

比如说 vmware

  • 主机硬件
  • 系统
  • 一种虚拟化管理软件hypervisor
  • 虚拟机

这种虚拟化通过软件,模拟出硬件在这个模拟硬件上安装新的系统,模拟虚拟化,也叫全虚拟化

优点隔离性非常强,可以模拟出所以的硬件,什么都是独立的

缺点:消耗资源大

虚拟化技术最大的缺点在于,批量分发,批量操作的时候,很大程度的浪费资源和时间

Linux容器技术:

不要用安装操作系统,容器不是模拟的技术,在原有操作系统的基础上把系统资源做到隔离

资源隔离,通过一个命名空间的方式

Namespaces命名空间

  • PID进程隔离
  • NET管理网络接口
  • IPC管理跨进通讯的访问
  • MNT 管理挂载点
  • UTS 隔离内核和版本表示

CCgroups控制每个namespaces中的资源分配

安装Docker

Docker分为CE和EE两个大版本。CE即社区版(免费,支持周期7个月),EE即企业版,强调安全,付费使用,支持周期24个月)

Centos 安装Docker CE

准备工作

Docker CE 支持64位版本Centos7,并且要求系统内核版本不低于3.10

首先卸载旧的Docker版本

 yum remove docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-selinux \
 docker-engine-selinux \
 docker-engine

配置Docke的yum源

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

验证Docker是否安装成功

docker version可以看到一个客户端一个服务端

[root@hwf docker]# docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:27:04 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:25:42 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

 

配置镜像加速

添加内核参数

tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

重新加载sysctl.conf文件

sysctl -p

进入网址:https://cr.console.aliyun.com/cn-hangzhou/mirrors

此处需要一个阿里云的账号,没有的话可以使用支付宝登录

登录进去会跳转到容器镜像服务,需要密码

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fooyh53n.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

Docker体系结构

Docker结构组成

1 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。

2 Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。

3 Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。

4 Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver 将下载镜像以 Graph 的形式存储。

5 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker容器网络环境。

6 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。

7 Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过 Libcontainer 来实现具体对容器进行的操作。

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年5月6日15:14:23
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Harbor镜像仓库 Docker

Harbor镜像仓库

Harbor镜像仓库 一、Harbor特性介绍 基于角色访问控制 每个人角色不同,需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。例如,开发人员需要对项目构建这就需要用到读写权限(push...
Centos7解决systemctl无法使用 Docker

Centos7解决systemctl无法使用

systemd整合: 因为systemd要求CAPSYSADMIN授权,从而得到了读取到宿主机cgroup的能力,Centos7中已经用fakesystemd代替了systemd来解决依赖问题。如果仍...
Dockaer网络 Docker

Dockaer网络

Dockaer网络 docker本地网络类型 查看本地支持网络类型 docker network ls # docker network ls NETWORK ID NAME DRIVER SCOPE...
Dockerfile练习 Docker

Dockerfile练习

Dockerfile练习 实验一:要求使用centos7基础镜像,搭建httpd+sshd+php的镜像,实现httpd与sshd服务能够正常访问 创建存放dockerfile的目录 mkdir -p...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: