1.前提条件
1.1 操作系统需求
Centos 7
、Centos 8
(本文用Centos 7)- 必须启用
centos-extras
存储库。该存储库在默认情况下是启用的,如果已经禁用了它,则需要重新启用它。 - 建议使用
overlay2
存储驱动。
查看
centos-extras
是否启用,输入如下命令:yum repolist
,如果列repo name
中存在CentOS-7 - Extras
则表明是启用的,否则代表禁用(可通过输入命令yum repolist all | more
展示全部仓库,查看列status状态),输入下边命令进行centos-extras开启操作
cd /etc/yum/repos.d/
vi CentOS-Base.repo
在[extras]
标签下,找到enabled
属性,设置为enabled=1
,保存退出即可。注意:此属性是默认开启的(当省略enabled
属性时是当作开启状态的)
1.2 卸载旧版本(如果没有跳过)
Docker的旧版本被称为Docker
或Docker -engine
。如果安装了这些组件,请卸载它们以及相关的依赖项。输入下方命令(如果以root用户登录,则忽略sudo
,直接用yum即可)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
如果yum
报告没有安装这些包,那也没关系。
保留/var/lib/docker/
目录中的images
、containers
、volumes
、networks
等内容。Docker Engine包现在称为Docker-CE。Docker Engine包现在称为Docker-CE
。
名称解释:
Docker-CE
社区版、免费
Docker-EE
企业版、收费,提供一些高级特性
Docker Engine
历史版本的名称,现在已经更新为Docker-CE
或Docker-EE
2.安装方式
可以根据需要,以不同的方式安装Docker引擎:
大多数用户设置Docker的存储库并从它们进行安装,以方便安装和升级任务。这是推荐的方法。
有些用户下载RPM包并手动安装,完全手动管理升级。这在一些情况下很有用,例如在无法访问互联网的系统上安装Docker。
在测试和开发环境中,一些用户选择使用方便的自动脚本来安装Docker。不建议在生产环境使用脚本进行安装。
1.使用存储库进行安装
在新主机上首次安装Docker-Engine
之前,需要先设置Docker存储库。之后,您可以从存储库安装和更新Docker。
设置存储库
安装yum-utils包(它提供yum-config-manager实用程序)并设置稳定存储库(这里的存储库已经更改为阿里云的了,默认国外的下载很慢)。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
可选:启用nightly(夜间)存储库或test(测试)存储库。
这些存储库包含在上面的docker.repo
文件中,但默认情况下是禁用的。您可以将它们与稳定存储库一起启用。下面的命令启用夜间存储库:
sudo yum-config-manager --enable docker-ce-nightly
要启用测试通道,执行如下命令:
sudo yum-config-manager --enable docker-ce-test
可以通过运行带有--disable
标志的yum-config-manager
命令禁用夜间存储库或测试存储库。要重新启用它,请使用--enable
标志。下面的命令禁用夜间存储库:
sudo yum-config-manager --disable docker-ce-nightly
安装Docker Engine(Docker 引擎)
-
安装Docker Engine和containerd的最新版本,或者进入下一步安装特定版本,如下命令:
sudo yum install docker-ce docker-ce-cli containerd.io
如果提示接受GPG密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,如果匹配,请接受。 -
(a)如果想安装指定版本的Docker,可以在repo文件里列出和排序的版本,可使用以下命令,这个例子按照版本号对结果进行排序,从最高到最低,并被截断:
`yum list docker-ce --showduplicates | sort -r`
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
返回的列表取决于启用了哪些存储库,并且特定于CentOS版本(在本例中由.el7后缀表示)。
- (b)根据包的完全限定包名安装特定的版本,即包名(docker-ce)加上版本字符串(第二列),从第一个冒号(:)开始,直到第一个用连字符(-)分隔的连字符。例如,docker-ce-18.09.1。
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
无论是安装最新版本还是安装指定版本,安装完之后不会启动Docker。它还创建了一个docker组,但是,默认情况下,它不添加任何用户到组。
有多个Docker库?
如果您启用了多个Docker库,在yum install
或yum update
命令中安装或更新时不指定版本,总是安装可能的最高版本,这可能不适合您的稳定性需求。
-
启动Docker
sudo systemctl start docker
-
通过运行hello-world镜像来验证Docker引擎是否正确安装。
sudo docker run hello-world
这个命令下载一个测试镜像并在容器中运行它。当容器运行时,它打印一条消息并退出。 -
设置开机自启动Docker
systemctl enable docker
centos 中启动服务后缀名.service
可以省略,也可以输入全名称docker.service
,即systemctl enable docker
与systemctl enable docker.service
是等价的。
以上就是安装和运行Docker引擎。使用sudo运行Docker命令。继续使用Linux postinstall
以允许非特权用户运行Docker命令和其他可选配置步骤。
2.从包中安装
如果不能使用Docker的存储库来安装Docker,可以依据centos版本下载对应的.rpm
文件并手动安装它。每次升级Docker Engine时,都需要下载一个新文件。
- 步骤一
访问https://download.docker.com/linux/centos/网站并选择你的CentOS版本。然后访问x86_64/stable/Packages/
路径,下载要安装的Docker版本的.rpm
文件。
stable
为稳定版
nightly
为夜间版
test
为测试版
- 步骤二
安装Docker引擎,将下面的路径更改为您下载Docker包的路径。
sudo yum install /path/to/package.rpm
- 步骤三
启动 Docker
sudo systemctl start docker
- 步骤四
通过运行hello-world镜像来验证Docker引擎是否正确安装。
sudo docker run hello-world
- 步骤五
设置开机自启动Docker
systemctl enable docker
如果要升级Docker引擎,请下载更新的包文件并重复安装过程,使用yum -y upgrade而不是yum -y install,并指向新文件。
3.使用脚本进行安装
Docker在get.docker.com提供了一个方便的脚本,可以快速且非交互式地将Docker安装到开发环境中。不推荐在生产环境中使用这个方便的脚本,但是可以作为一个示例来创建适合您需要的配置脚本。该脚本的源代码是开源的,可以在GitHub上的docker-install存储库中找到。
在本地运行脚本之前,一定要检查从互联网下载的脚本。在安装之前,请先了解便利性脚本的潜在风险和局限性:
- 该脚本需要root或sudo权限才能运行。
- 该脚本尝试检测您的Linux发行版和版本,并为您配置包管理系统,并且不允许您自定义大多数安装参数。
- 该脚本无需确认即可安装依赖项和建议。这可能会安装大量的包,这取决于您的主机的当前配置。
- 默认情况下,该脚本安装Docker、containerd和runc的最新稳定版本。当使用此脚本配置机器时,可能会导致Docker意外的主要版本升级。在部署到生产系统之前,始终在测试环境中测试(主要)升级。
- 该脚本不是为升级现有Docker安装而设计的。当使用该脚本更新现有安装时,依赖项可能不会更新到预期的版本,从而导致使用过时的版本。
提示:在运行脚本之前预览脚本步骤
你可以使用DRY_RUN=1选项运行脚本,以了解在安装过程中脚本将执行哪些步骤:
curl -fsSL https://get.docker.com -o get-docker.sh
DRY_RUN=1 sh ./get-docker.sh
下边这个例子从getdocker.com
下载这个脚本,并运行它在Linux上安装Docker的最新稳定版本:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker服务在基于Debian的发行版上自动启动。在基于RPM的发行版上,如CentOS、Fedora、RHEL或SLES,您需要使用适当的systemctl或service命令手动启动它。说明默认情况下,非root用户不能运行Docker命令。
使用Docker作为一个non-privileged用户(非特权用户),或安装在rootless mode(无根模式)?
安装脚本需要root或sudo权限来安装和使用Docker。如果您想要授予非root用户对Docker的访问权限,请参考Linux安装后的步骤
。Docker也可以在没有根权限的情况下安装,或者配置为在无根模式下运行。有关在无根模式下运行Docker的说明,请参阅以非根用户(无根模式)运行Docker守护进程
。
安装预发版本
Docker还在test.docker.com
上提供了一个方便的脚本,用于在Linux上安装Docker的预发行版。这个脚本等价于getdocker.com
上的脚本,但是配置您的包管理器以启用来自我们包库的“测试”通道,其中包括Docker的稳定版本和预发布版本(beta版本,候选版本)。使用此脚本可以获得对新版本的早期访问,并在它们作为稳定版本发布之前在测试环境中评估它们。
要从"test"通道安装Linux上最新版本的Docker,请运行:
curl -fsSL https://test.docker.com -o test-docker.sh
sudo sh test-docker.sh
3.卸载 Docker Engine
- 卸载Docker Engine、CLI和Containerd包:
sudo yum remove docker-ce docker-ce-cli containerd.io
Images
(镜像)、containers
(容器)、volumes
(存储卷),或者customized configuration
(自定义配置文件)等文件不会自动删除。需要手动删除,下边命令删除镜像、容器、存储卷:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
您必须手动删除任何编辑过的配置文件。
可能会遇到的问题
- Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
yum provides '*/applydeltarpm'
yum install deltarpm -y
- No Presto metadata available for docker-ce-stable
前两个命令解决docker-ce下载慢的问题
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
启动、开机自启动、关闭等docker
- 启动docker
systemctl start docker
- 开机自启动docker
systemctl enable docker
- 关闭docker
systemctl stop docker.socket
systemctl stop docker
- 重启docker
systemctl restart docker