Docker容器

67 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

容器其实是一种沙盒技术。沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。

Docker 优势:

1、交付物标准化
Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。

2、应用隔离
Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本. 

3、一次构建,多次交付
类似于集装箱的"一次装箱,多次运输",Docker镜像可以做到"一次构建,多次交付"。

Docker的度量:

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的

可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性

 通过内核的命名空间来实现的,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2)可度量性

 Docker主要通过cgroups控制组来控制资源的度量和分配。

3)移植性

 Docker利用AUFS来实现对容器的快速更新。

 AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层

 的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性

 安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。

 容器内部之间的安全性主要是通过命名空间和cgroups来保证的。

 容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。


Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间

 多个容器可以共享同一个基础镜像存储。

2)快速部署

3)升级方便

 升级一个基础镜像即可影响到所有基于它的容器。需要注意已经在运行的docker容器不受影响

容器和 VM 的主要区别:

表面区别:
容器占用体积小,虚拟机占用体积大
隔离性:容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。
启动速度:虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
容器使用宿主操作系统的内核,而虚拟机使用独立的内核。Docker 的局限性之一是,它只能用在64位的操作系统上。
本质区别:
容器是被隔离的进程

docker安装

CentOS 7 中 Docker 的安装:

Docker 软件包已经包括在默认的 CentOS-Extras 软件源(联网使用centos7u2自带网络Yum源)里。因此想要安装 docker,只需要运行下面的 yum 命令:

# yum install -y epel*
# yum install docker
启动 Docker 服务:
# service docker start
# chkconfig docker on
CentOS 7    
# systemctl start docker.service
# systemctl enable docker.service 

确定docker服务在运行:

结果会显示服务端和客户端的版本,如果只显示客户端版本说明服务没有启动

# docker version

Client:
Version:         1.10.3
API version:     1.22
...

docker版本与官方安装方式

moby、docker-ce与docker-ee

最早时docker是一个开源项目,主要由docker公司维护。

2017年3月1日起,docker公司将原先的docker项目改名为moby,并创建了docker-ce和docker-ee。

三者关系:

moby是继承了原先的docker的项目,是社区维护的的开源项目,谁都可以在moby的基础打造自己的容器产品
​
docker-ce是docker公司维护的开源项目,是一个基于moby项目的免费的容器产品
​
docker-ee是docker公司维护的闭源产品,是docker公司的商业产品

moby project由社区维护,docker-ce project是docker公司维护,docker-ee是闭源的docker公司维护。

CentOS--官方安装

如果是centos,上面的安装命令会在系统上添加yum源:/etc/yum.repos.d/docker-ce.repo 
# wget https://download.docker.com/linux/centos/docker-ce.repo
# mv docker-ce.repo /etc/yum.repos.d
# yum install -y docker-ce

国内源安装新版docker

使用aliyun docker yum源安装新版docker

删除已安装的Docker

[root@docker-server ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

配置阿里云Docker Yum源

# yum install -y yum-utils device-mapper-persistent-data lvm2 git
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装指定版本

 查看Docker版本:
# yum list docker-ce --showduplicates

安装较旧版本(比如Docker 17.03.2) : 需要指定完整的rpm包的包名,并且加上--setopt=obsoletes=0 参数:

# yum install -y --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
​
例如:
# yum install -y --setopt=obsoletes=0 docker-ce-19.03.2 docker-ce-selinux-19.03.2

安装Docker新版本(比如Docker 18.03.0):加上rpm包名的版本号部分或不加都可以:

# yum install docker-ce-18.03.0.ce  -y
或者
[root@docker-server ~]# yum install -y docker-ce

启动Docker服务:

#systemctl enable docker
#systemctl start docker

查看docker版本状态:

[root@docker-server ~]# docker -v
Docker version 19.03.2, build 6a30dfc