(一)、简介
Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker是通过内核虚拟化技术(namespacescgroups等)来提供容器的资源隔离安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。

Docker与虚拟机相比的优缺点:
Docker入门(一)

docker的优点:
1. 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
2. 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
3.一致的运行环境:开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一
致,导致有些bug 并未在开发过程中被发现。而Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现「这段代码在我机器上没问题啊」这类问题。
4.持续交付和部署:Docker是build once,run everywhere. 使用Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
5.更轻松的迁移:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。使用Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

(二)、Docker在CentOS/Redhat7.4安装
1、安装前提条件:
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
本文介绍 Docker CE 的安装使用。

2、yum 安装
(1)、查看系统的版本

[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

(2)、删除旧的docker版本

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

(3)、安装必要的工具
[root@localhost ~]#sudo yum install -y yum-utils device-mapper-persistent-data lvm2

(4)、添加yum源的相关软件信息并更新缓存

[root@localhost ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@localhost ~]# sudo yum makecache fast
Loaded plugins: fastestmirror
base                                                                                                             | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                 | 2.9 kB  00:00:00     
extras                                                                                                           | 3.4 kB  00:00:00     
updates                                                                                                          | 3.4 kB  00:00:00     
(1/8): extras/7/x86_64/prestodelta                                                                               | 100 kB  00:00:00     
(2/8): extras/7/x86_64/filelists_db                                                                              | 603 kB  00:00:00     
(3/8): extras/7/x86_64/other_db                                                                                  | 126 kB  00:00:00     
(4/8): updates/7/x86_64/prestodelta                                                                              | 672 kB  00:00:00     
(5/8): updates/7/x86_64/other_db                                                                                 | 574 kB  00:00:00     
(6/8): docker-ce-stable/x86_64/filelists_db                                                                      | 9.4 kB  00:00:00     
(7/8): docker-ce-stable/x86_64/other_db                                                                          |  70 kB  00:00:00     
(8/8): updates/7/x86_64/filelists_db                                                                             | 3.3 MB  00:00:05     
Loading mirror speeds from cached hostfile
Metadata Cache Created

(5)、安装docer-ce
[root@localhost ~]# sudo yum -y install docker-ce
(6)、创建docker服务并自启动

 [root@localhost ~]# systemctl enable docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-10-23 14:38:10 CST; 24h ago
     Docs: https://docs.docker.com
 Main PID: 14269 (dockerd)
   CGroup: /system.slice/docker.service
           ├─14269 /usr/bin/dockerd
           └─14277 docker-containerd --config /var/run/docker/containerd/containerd.toml

Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36+08:00" level=info msg="shim reaped" id=12e2c02c...75c5de
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.443901659+08:00" level=error msg="stream copy e... fifo"
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.443982581+08:00" level=error msg="stream copy e... fifo"
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.492469070+08:00" level=error msg="12e2c02cb1218...ainer"
Oct 23 15:35:16 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:16+08:00" level=info msg="shim docker-containerd-s...=14989
Oct 23 15:35:20 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:20+08:00" level=info msg="shim reaped" id=51fa7e93...09c377
Oct 23 15:35:20 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:20.787866184+08:00" level=info msg="ignoring event...elete"
Oct 23 17:16:55 localhost.localdomain dockerd[14269]: time="2018-10-23T17:16:55+08:00" level=info msg="shim docker-containerd-s...=15236
Oct 23 17:51:36 localhost.localdomain dockerd[14269]: time="2018-10-23T17:51:36+08:00" level=info msg="shim reaped" id=04e3b5c3...81e21c
Oct 23 17:51:36 localhost.localdomain dockerd[14269]: time="2018-10-23T17:51:36.468411067+08:00" level=info msg="ignoring event...elete"
Hint: Some lines were ellipsized, use -l to show in full.

7、docker镜像的加速。和yum一样,docker国外的镜像拉取十分缓慢,可以通过设置国内的网站来加速其访问的速度,国内著名的有网易(http://hub-mirror.c.163.com ) 和阿里云。新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
请在该配置文件中加入,如果没有该文件的话,先建一个就好了:

[root@localhost ~]# vim /etc/docker/daemon.json

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

8、删除命令:

[root@localhost ~]#sudo yum remove docker-ce
[root@localhost ~]#sudo rm -rf /var/lib/docker