一、Docker介绍

1、Docker是什么

Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup、namespace、Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机于其他进程,这种运行时封装的状态称为容器。

Docker早期版本是基于LXC,并进一步对其封装、包括文件系统、网络互联、镜像管理等方面,极大简化了容器管理。从0.7版本以后开始移除LXC,转为自行研发的libcontainer,从1.11版本开始,进一步演进为使用runC和containerd。

Docker里念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序,程序之间相互隔离。

 

2、Docker体系结构

docker supervisor 环境命令 docker shim runc_docker

  • Containerd:是一个简单的守护进程,使用runC管理容器。向Docker Engine提供接口。
  • Shim:只负责管理一个容器。
  • runC:是一个轻量级的工具,只用来运行容器。

举例:创建容器的流程

  1. Docker client将命令传递给Docker Engine,Docker Engine选择本地镜像或者从Image Repository(镜像仓库)拉取镜像;
  2. Docker Engine通知Contaninerd创建容器,Contaninerd收到请求后,启动shim;
  3. shim交给runC提供容器运行环境,runC挂载文件系统,启动对应的进程。
#通过查看docker进程,可以看到Contaninerd、Shim和runC详细
root     10532  0.0  0.0   9972  6400 ?        Sl   03:24   0:00 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux
/moby/ce02105208cc258d6e18e1b3f7fa6e7c783c544ca82b27ba8d9c55bf0ae27bd9 -address 
/var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd
 -runtime-root /var/run/docker/runtime-runc

docker supervisor 环境命令 docker shim runc_Docker_02

                                                           (官方体系结构图)

架构也是一样的,不过没有详细解释Containers底层创建过程。

 

3、内部组件

Namespaces:命名空间,linux内核提供的一种对进程资源隔离的机制,例如进程、网络、挂载点等资源。

CGroups:控制组,Linux内核提供的一种限制进程资源的机制;例如CPU、内存等资源。

UnionFS:联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一个分层的模型。

 

4、虚拟机与容器区别

docker supervisor 环境命令 docker shim runc_Docker_03

详细对比:

docker supervisor 环境命令 docker shim runc_docker_04

 

5、Docker应用场景

 场景一、节省项目环境部署时间

  • a、单项目打包
  • b、整套项目打包
  • c、新开源技术试用

场景二、环境一致性

场景三、持续集成

场景四、微服务

场景五、弹性伸缩

总结:开箱即用、快速部署、可移植性强、环境隔离等。

详情点击:http://blog.51cto.com/lizhenliang/1978081

 

二、Docker安装

1、Centos7.4安装Docker

-----------------------------安装------------------------------
yum install -y yum-utils   device-mapper-persistent-data   lvm2    #安装依赖包
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo  #添加Docker软件包源
yum makecache fast    #快速更新yum源索引
yum install docker-ce    #安装Docker社区版,ce社区版、EE企业版
systemctl start docker   #启动Docker

-----------------------------卸载-------------------------------
yum remove docker-ce
rm -rf /var/lib/docker

 官方安装文档:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1