Docker历史
2013年2月,前Gluster的CEO Ben Golub和dotCloud的CEO Solomon Hykes坐在一起聊天时,Solomon谈到想把dotCloud内部使用的Container容器技术单独拿出来开源,然后围绕这个技术开一家新公司提供技术支持。28岁的Solomon在使用Python开发dotCloud的PaaS云时发现,使用LXC(Linux Container)技术可以打破产品发布过程中应用开发工程师和系统工程师两者之间无法轻松协作发布产品的难题。这个Container容器技术可以把开发者从日常部署应用的繁杂工作中解脱出来,让开发者能专心写好程序;从系统工程师的角度来看也是一样,他们迫切需要从各种混乱的部署文档中解脱出来,让系统工程师专注在应用的水平扩展、稳定发布的解决方案上。2013年3月Docker项目开源。Docker自开源后受到广泛的关注和讨论,至今其GitHub项目已经超过3万6千个Stat(星标)和一万多个Fork(分支)。甚至由于Docker项目的火爆,在2013年底,DotCloud公司决定改名为Docker。Docker最初是在Ubuntu 12.04上开发实现的;Red Hat则从RHEL 6.5开始对Docker进行支持;Google也在其PaaS产品中广泛应用Docker。
Docker生态圈
Docker在2016年很早的时候就明确了将会在企业级方面重点跟进。在短短的一年时间之内推出的1.12和1.13的版本在功能上确实是很大的进步。同时在2017年的3月1号之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开,并且Docker的命名方法修改为“YY.MM”的版本名称(像Ubuntu),用户可以选择Stable(发布较慢)或者Edge(发布较快)版本。其中“Edge”与“Stable”两个版本发行也有着自己的不同的发行时间,Edge版本每月发布,提供一个月支持;Stable版本每季度发布,提供4个月支持。他们都是基于月份的发行版本,例如,17.03的第一版就指向17.03.0,如果有bug/安全修复需要发布,那么将会指向17.03.1等等。
如图1-1所示是Docker的发行时间图。
图1-1 Docker发行时间图
下面简单的了解一下CE和EE的区别:
● Docker Engine改为DockerCE(社区版)
它包含了CLI客户端、后台进程/服务以及API。用户像以前以同样的方式获取。
● Docker Data Center改为Docker EE(企业版)
云服务商已经在他们的平台上提供运行容器的解决方案。一些是内部的解决方案,其它的则是基于开源软件。当然在云主机上安装Docker来运行容器是没有任何问题的。不过,大多数云服务商的容器服务更进一步地提供了更为简洁友好的用户管理界面。
以下是支持Docker的云服务商:
● Amazon EC2 Container Service在EC2实例上运行容器服务。容器服务免费,只需要支付EC2费用。
● Google Container Engine构建于Kubernetes(由Google发起的开源容器编排项目)之上。
● Azure(Microsoft提供)提供基于Mesos的Docker容器支持。
● Stackdock提供Docker容器托管。
● Tutum提供Docker容器托管。
● GiantSwarm是一家提供运行于容器内微服务架构的定制与托管的云平台。
● Joyent Triton提供Docker容器监控和托管。
● Jelastic Docker为容器部署提供云托管编排工具。
Docker业界现状
Docker之所以能够成为最受欢迎的开源项目之一可能会被很多人看做是炒作,但是也是由其坚实的基础所决定的。Docker的影响力已经得到整个行业许多大企业的支持,包括亚马逊、Canonica、CenturyLink、谷歌、IBM、微软、New Relic、Pivotal、红帽和VMware公司。这使得只要有Linux的地方,Docker就可以无处不在。除了这些鼎鼎有名的大公司以外,许多初创公司也在围绕着Docker发展,或者改变他们的发展方向来与Docker更好地结合起来。这些合作伙伴们(无论大或小)都将帮助推动Docker核心项目及其周边生态环境的快速发展。
Docker潮流趋势
Docker公司对核心功能(libcontainer),跨服务管理(libswarm)和容器间的信息传递(libchan)的发展上提出了明确的路线。与此同时,该公司已经表明愿意收购Orchard实验室,将其纳入自身生态系统。然而Docker不仅仅是Docker公司的,这个项目的贡献者也来自许多大牌贡献者,其中不乏像谷歌、IBM和Red Hat这样的大公司。在仁慈独裁者、CTO Solomon Hykes掌舵的形势下,为公司和项目明确了技术领导关系。在前18个月的项目中通过成果输出展现了其快速行动的能力,而且这种趋势并没有减弱的迹象。
许多投资者正在寻找10年前VMware公司的ESX/vSphere平台的特征矩阵,并试图找出虚拟机的普及而带动的企业预期和当前Docker生态系统两者的距离(和机会)。目前Docker生态系统正缺乏类似网络、存储和(对于容器的内容的)细粒度版本管理,这些都为初创企业和创业者提供了机会。
随着时间的推移,在虚拟机和容器(Docker的“运行”部分)之间的区别将变得没那么重要了,而关注点将会转移到“构建”和“交付”方面。
Docker的优势
相较传统的虚拟化方式,Docker主要有以下几方面的优势:
① 更高效的利用系统资源
Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。
② 更快速的交付和部署
Docker在整个开发周期中都可以辅助实现快速交付,并且允许开发者在装有应用和服务的本地容器做开发,可以直接集成到可持续开发流程之中。
③ 更高效的部署和扩容
Docker容器几乎可以运行于任意平台上,包括物理机、虚拟机、公有云、私有云等,这种兼容性就非常方便用户把一个应用程序从一个平台直接迁移到另外一个平台。Docker的兼容性和轻量特性可以很轻松地实现负载动态管理,可以快速扩容或方便下线应用和服务。
④ 更简单的管理
使用Docker,通常只需要小小的改变就可以替代以往大量的更新工作。所有的修改都是以增量的方式被分发和更新,从而实现自动化且高效的管理。
Docker技术原理
Docker使用Google公司推出的Go语言进行开发实现的,基于Linux内核的Cgroups,Namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。最初实现是基于LXC,从Docker 0.7以后开始去除LXC,转而使用自行开发的Libcontainer,从Docker 1.11开始,则进一步演进为使用RunC和Containerd。
(1)Cgroups
Cgroups即为Control groups,其作用就是在Linux中限制某个或者某些进程的分配资源。在group中,有分配好的特定比例的CPU时间、IO时间、可用内存大小等。Cgroups是将任意进程进行分组化管理的Linux内核功能。最初由Google的工程师提出,后来被整合进Linux内核中。
(2)Namespace
命名空间(namespace)是Linux中用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。Linux主要有7种不同的命名空间,包括CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER和 CLONE_NEWUTS,通过这7个选项能在创建新的进程时设置新进程应该在哪些资源上与宿主机进行隔离。Docker就是通过Linux的Namespaces对不同的容器实现隔离的。
(3)AUFS
AUFS(Another Union File System),是一个能透明覆盖一或多个现有文件系统的层状文件系统,支持将不同目录挂载到同一个虚拟文件系统下的文件系统,可以把不同的目录联合在一起,组成一个单一的目录。这是一种虚拟的文件系统,文件系统不用格式化,直接挂载即可。Docker则一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件时,AuFS创建该文件的一个副本。AuFS可以把多层合并文件系统的单层表示。这个过程称为写入复制(copy on write)。AuFS允许Docker把某种镜像作为容器的基础。使用AuFS的另一个好处是Docker的版本容器镜像能力,每个新版本都是一个与之前版本的简单差异改动,有效地保持镜像文件最小化。
因此,基于Linux命名空间(Namespaces)、控制组(Cgroups)和AUFS三大技术才支撑了目前Docker的实现,也是Docker能够出现的最重要的原因。
Docker基本概念
(1)容器的简介
容器是一种轻量级的、可移植的、自包含的软件打包技术,使应用程序几乎可以在任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。容器的本质就是一种基于操作系统能力的隔离技术,是一组受到资源限制且彼此间相互隔离的进程。
谈到容器就不得不提其与虚拟机技术的区别。传统虚拟机技术是虚拟了一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需应用进程。而容器则可共享同一个操作系统的内核,将应用进程与系统其他部分隔离开。
图2-1 虚拟化VS容器
如图2-1所示可以看出,容器与虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。虚拟化会使用虚拟机监控程序模拟硬件,从而使多个操作系统能够并行运行;Linux容器则是在本机操作系统上运行,与所有容器中共享该操作系统。因此,在资源有限的情况下,想要进行密集部署的轻量级应用时,容器技术就能凸显出其优势。
Docker系统架构
(1)Docker的架构
Docker使用客户端/服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具docker以及一整套RESTful API进行通信,可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。如图2-2所示。
图2-2 Docker的架构图
(2)Docker的组件
一个完整的Docker服务包括Docker Daemon服务器、Docker Client客户端、Docker Image镜像、Docker Registry库和Docker Contrainer容器,如图2-3所示。
图2-3Docker的组件
① Docker镜像
Docker镜像是一个只读模板,用于创建Docker容器,由Dockerfile文本描述镜像的内容。构建一个镜像实际就是安装、配置和运行的过程。Docker镜像基于UnionFS把以上过程进行分层(Layer)存储,这样更新镜像可以只更新变化的层。
Docker镜像有多种生成方法:
● 可以从无到有开始创建镜像。
● 可以下载并使用别人创建好的现成的镜像。
● 可以在现有镜像上创建新的镜像。
Docker Hub提供了很多镜像,但在实际工作中,Docker Hub中的镜像并不能满足工作的需要,往往需要构建自定义镜像。构建自定义镜像主要有两种方式:docker commit和Dockerfile,如图2-4所示。
图2-4 构建自定义镜像方式
可以将docker commit视为在以往版本控制系统里提交变更,然后进行变更的提交即可。docker commit、docker export和docker add类似都可以输出image,但是最好的生成image的方法还是使用Dockerfile。
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大地简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随各种方法、命令和参数,其产出为一个新的可以用于创建容器的镜像。
② Docker容器
Docker容器是一个镜像的运行实例。它可以被启动、开始、停止和删除。每个容器都是相互隔离的、保证平台的安全。Dcoker容器由应用程序本身和依赖两部分组成。容器在宿主机操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于虚拟机。
③ Docker仓库
Docker仓库是Docker镜像库,是用来集中存放镜像文件的场所。Docker Registry也是一个容器,往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
Registry在Github上有两份代码:老代码库和新代码库。老代码是采用Python编写的,存在pull和push的性能问题,在0.9.1版本之后就标志为deprecated,意思为不再继续开发。从2.0版本开始,Registry就在新代码库进行开发,新代码库采用Go语言编写,修改了镜像id的生成算法、Registry上镜像的保存结构,大大优化了pull和push镜像的效率。
Docker离线部署
由于我们要采用离线部署,所以需要先找一台可以上网的主机配置相关yum源进行拉取。
1、我们通过yum命令将安装docker-ce所需的依赖下载到指定目录下。
[root@localhost ~]# yum install docker-ce --downloadonly --downloaddir=/tmp/docker
。。。
Installing:
docker-ce x86_64 3:26.1.4-1.el7 docker-ce-stable 27 M
Installing for dependencies:
audit-libs-python x86_64 2.8.5-4.el7 base 76 k
checkpolicy x86_64 2.5-8.el7 base 295 k
container-selinux noarch 2:2.119.2-1.911c772.el7_8 extras 40 k
containerd.io x86_64 1.6.33-3.1.el7 docker-ce-stable 35 M
docker-buildx-plugin x86_64 0.14.1-1.el7 docker-ce-stable 14 M
docker-ce-cli x86_64 1:26.1.4-1.el7 docker-ce-stable 15 M
docker-ce-rootless-extras x86_64 26.1.4-1.el7 docker-ce-stable 9.4 M
docker-compose-plugin x86_64 2.27.1-1.el7 docker-ce-stable 13 M
fuse-overlayfs x86_64 0.7.2-6.el7_8 extras 54 k
fuse3-libs x86_64 3.6.1-4.el7 extras 82 k
libcgroup x86_64 0.41-21.el7 base 66 k
libseccomp x86_64 2.3.1-4.el7 base 56 k
libsemanage-python x86_64 2.5-14.el7 base 113 k
policycoreutils-python x86_64 2.5-34.el7 base 457 k
python-IPy noarch 0.75-6.el7 base 32 k
setools-libs x86_64 3.3.8-4.el7 base 620 k
slirp4netns x86_64 0.4.3-4.el7_8 extras 81 k
Transaction Summary
============================================================================================================================================================================================
Install 1 Package (+17 Dependent packages)
Total download size: 116 M
Installed size: 407 M
Background downloading packages, then exiting:
warning: /tmp/docker/audit-libs-python-2.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY ] 0.0 B/s | 0 B --:--:-- ETA
Public key for audit-libs-python-2.8.5-4.el7.x86_64.rpm is not installed
(1/18): audit-libs-python-2.8.5-4.el7.x86_64.rpm | 76 kB 00:00:00
Public key for container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm is not installed
(2/18): container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm | 40 kB 00:00:00
(3/18): checkpolicy-2.5-8.el7.x86_64.rpm | 295 kB 00:00:00
warning: /tmp/docker/docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY ] 876 kB/s | 27 MB 00:01:43 ETA
Public key for docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm is not installed
(4/18): docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm | 14 MB 00:00:32
(5/18): containerd.io-1.6.33-3.1.el7.x86_64.rpm | 35 MB 00:01:20
(6/18): docker-ce-26.1.4-1.el7.x86_64.rpm | 27 MB 00:01:01
(7/18): docker-ce-cli-26.1.4-1.el7.x86_64.rpm | 15 MB 00:00:31
(8/18): fuse3-libs-3.6.1-4.el7.x86_64.rpm | 82 kB 00:00:00
(9/18): libcgroup-0.41-21.el7.x86_64.rpm | 66 kB 00:00:00
(10/18): libsemanage-python-2.5-14.el7.x86_64.rpm | 113 kB 00:00:00
(11/18): policycoreutils-python-2.5-34.el7.x86_64.rpm | 457 kB 00:00:00
(12/18): python-IPy-0.75-6.el7.noarch.rpm | 32 kB 00:00:00
(13/18): setools-libs-3.3.8-4.el7.x86_64.rpm | 620 kB 00:00:00
(14/18): slirp4netns-0.4.3-4.el7_8.x86_64.rpm | 81 kB 00:00:00
(15/18): libseccomp-2.3.1-4.el7.x86_64.rpm | 56 kB 00:00:00
(16/18): docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm | 9.4 MB 00:00:21
(17/18): fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm | 54 kB 00:00:07
(18/18): docker-compose-plugin-2.27.1-1.el7.x86_64.rpm | 13 MB 00:00:28
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 845 kB/s | 116 MB 00:02:20
exiting because "Download Only" specified
2、查看下载内容,对下载内容进行打包。
[root@localhost ~]# ll /tmp/docker/
total 118488
-rw-r--r--. 1 root root 78256 Aug 23 2019 audit-libs-python-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 302068 Nov 12 2018 checkpolicy-2.5-8.el7.x86_64.rpm
-rw-r--r--. 1 root root 37045876 Jun 12 23:02 containerd.io-1.6.33-3.1.el7.x86_64.rpm
-rw-r--r--. 1 root root 40816 Jul 6 2020 container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
-rw-r--r--. 1 root root 14280912 Jun 12 22:55 docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 28596976 Jun 12 22:55 docker-ce-26.1.4-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 15445372 Jun 12 22:55 docker-ce-cli-26.1.4-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 9840840 Jun 12 22:55 docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 14058416 Jun 12 22:55 docker-compose-plugin-2.27.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 83764 Apr 29 2020 fuse3-libs-3.6.1-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 55796 Apr 29 2020 fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
-rw-r--r--. 1 root root 67720 Aug 23 2019 libcgroup-0.41-21.el7.x86_64.rpm
-rw-r--r--. 1 root root 57460 Apr 4 2020 libseccomp-2.3.1-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 115284 Nov 12 2018 libsemanage-python-2.5-14.el7.x86_64.rpm
-rw-r--r--. 1 root root 468316 Apr 4 2020 policycoreutils-python-2.5-34.el7.x86_64.rpm
-rw-r--r--. 1 root root 32880 Jul 4 2014 python-IPy-0.75-6.el7.noarch.rpm
-rw-r--r--. 1 root root 635184 Nov 12 2018 setools-libs-3.3.8-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 83452 Apr 29 2020 slirp4netns-0.4.3-4.el7_8.x86_64.rpm
[root@localhost ~]# tar -zcf docker.tar.gz /tmp/docker/*
tar: Removing leading `/' from member names
3、在上传服务器前,我们先对服务器做一些配置
配置防火墙及SELinux,示例代码如下:
[root@localhost ~]# iptables -t filter -F
[root@localhost ~]# iptables -t filter -X
[root@localhost ~]# iptables -t filter -Z
[root@localhost ~]# /usr/sbin/iptables-save
开启路由转发
[root@localhost ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.ip_forward=1
> EOF 回车
[root@localhost ~]# modprobe br_netfilter
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
3、执行完如上操作,我们就可以将打包好的离线包上传至服务器了,然后进行解压安装。
[root@localhost tmp]# tar -zxvf /root/docker.tar.gz -C /tmp/docker/
tmp/docker/audit-libs-python-2.8.5-4.el7.x86_64.rpm
tmp/docker/checkpolicy-2.5-8.el7.x86_64.rpm
tmp/docker/containerd.io-1.6.33-3.1.el7.x86_64.rpm
tmp/docker/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
tmp/docker/docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm
tmp/docker/docker-ce-26.1.4-1.el7.x86_64.rpm
tmp/docker/docker-ce-cli-26.1.4-1.el7.x86_64.rpm
tmp/docker/docker-ce-rootless-extras-26.1.4-1.el7.x86_64.rpm
tmp/docker/docker-compose-plugin-2.27.1-1.el7.x86_64.rpm
tmp/docker/fuse3-libs-3.6.1-4.el7.x86_64.rpm
tmp/docker/fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm
tmp/docker/libcgroup-0.41-21.el7.x86_64.rpm
tmp/docker/libseccomp-2.3.1-4.el7.x86_64.rpm
tmp/docker/libsemanage-python-2.5-14.el7.x86_64.rpm
tmp/docker/policycoreutils-python-2.5-34.el7.x86_64.rpm
tmp/docker/python-IPy-0.75-6.el7.noarch.rpm
tmp/docker/setools-libs-3.3.8-4.el7.x86_64.rpm
tmp/docker/slirp4netns-0.4.3-4.el7_8.x86_64.rpm
[root@localhost tmp]# cd docker/
[root@localhost docker]# rpm -ivh *.rpm --nodeps
warning: audit-libs-python-2.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
warning: containerd.io-1.6.33-3.1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:libseccomp-2.3.1-4.el7 ################################# [ 6%]
2:libcgroup-0.41-21.el7 ################################# [ 11%]
3:slirp4netns-0.4.3-4.el7_8 ################################# [ 17%]
4:setools-libs-3.3.8-4.el7 ################################# [ 22%]
5:python-IPy-0.75-6.el7 ################################# [ 28%]
6:libsemanage-python-2.5-14.el7 ################################# [ 33%]
7:fuse3-libs-3.6.1-4.el7 ################################# [ 39%]
8:fuse-overlayfs-0.7.2-6.el7_8 ################################# [ 44%]
9:docker-compose-plugin-0:2.27.1-1.################################# [ 50%]
10:docker-buildx-plugin-0:0.14.1-1.e################################# [ 56%]
11:docker-ce-cli-1:26.1.4-1.el7 ################################# [ 61%]
12:checkpolicy-2.5-8.el7 ################################# [ 67%]
13:audit-libs-python-2.8.5-4.el7 ################################# [ 72%]
14:policycoreutils-python-2.5-34.el7################################# [ 78%]
15:container-selinux-2:2.119.2-1.911################################# [ 83%]
16:containerd.io-1.6.33-3.1.el7 ################################# [ 89%]
17:docker-ce-rootless-extras-0:26.1.################################# [ 94%]
18:docker-ce-3:26.1.4-1.el7 ################################# [100%]
4、启动并设置开机自启
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
5、查新docker系统信息
[root@localhost ~]# docker info
Client: Docker Engine - Community
Version: 26.1.4
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.27.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 26.1.4
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-1160.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.777GiB
Name: localhost.localdomain
ID: 8aace287-01b9-4a7d-aae5-d47fdf85bed0
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
至此安装就结束了
Docker常规命令操作
以下是Docker服务常用的操作命令。
管理命令:
container #管理容器
image #管理镜像
network #管理网络
node #管理Swarm节点
plugin #管理插件
secret #管理Docker secrets
service #管理服务
stack #管理Docker stacks
swarm #管理Swarm集群
system #查看系统信息
volume #管理卷
普通命令:
attach #进入一个运行的容器
build #从一个DockerFile构建镜像
commit #从容器创建一个镜像
cp #从容器和主机文件系统之间拷贝文件
create #创建一个容器
diff #检查容器文件系统上的更改
events #从服务器获取实时事件
exec #在正在运行的容器中运行命令
export #将容器的文件系统导出为tar存档
history #显示镜像的历史记录
images #查看镜像列表
import #从归档文件中创建镜像
info #显示系统范围的信息
inspect #返回Docker对象的低级信息
kill #kill运行中的容器
load #从存档或者STDIN加载镜像
login #登陆Docker镜像仓库
logout #退出Docker镜像仓库
logs #获取一个容器的日志
pause #暂停一个或多个容器中的所有进程
port #查看端口映射或容器的特定映射列表
ps #查看容器列表
pull #从镜像仓库拉取镜像
push #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
rename #重命名容器
restart #重启容器
rm #删除容器
rmi #删除镜像
run #创建一个新的容器并运行一个命令
save #将指定镜像保存成 tar 归档文件
search #从Docker Hub搜索镜像
start #启动容器
stats #实时显示容器资源使用情况的统计信息
stop #停止容器
tag #标记本地镜像,将其归入某一仓库
top #展示一个容器中运行的进程
unpause #恢复容器中所有的进程
update #更新容器配置
version #显示Docker的版本信息
wait #阻塞直到容器停止,然后打印退出代码