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