(一)、简介
Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并听从Apache2.0协议开源。Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。
Docker是经过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。因为Docker经过操做系统层的虚拟化实现隔离,因此Docker容器在运行时,不须要相似虚拟机(VM)额外的操做系统开销,提升资源利用率。linux
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 使镜像构建透明化,不单单开发团队能够理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。json
(二)、Docker在CentOS/Redhat7.4安装
一、安装前提条件:
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。vim
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
本文介绍 Docker CE 的安装使用。centos
二、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
app
(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服务并自启动dom
[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.
七、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"] }
八、删除命令:
[root@localhost ~]#sudo yum remove docker-ce [root@localhost ~]#sudo rm -rf /var/lib/docker