CentOS安装Docker
安装前准备
CentOS版本
要安装Docker Engine,你需要以下CentOS版本中的一个维护版本:
- CentOS 7
- CentOS 8 (stream)
- CentOS 9 (stream)
centos-extras
仓库必须被启用。这个仓库默认是启用的,但如果你已经禁用了它,你需要重新启用它。
删除旧版本
旧版本的Docker以docker
或docker-engine
为名。在尝试安装新版本之前,请卸载任何此类旧版本,以及相关的依赖关系。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
当你卸载Docker时,存储在/var/lib/docker/
中的镜像、容器、数据卷和网络不会自动删除。
通过Yum进行安装
在你第一次在新主机上安装Docker Engine之前,你需要设置Docker仓库。之后,你可以从存储库中安装和更新Docker。
设置存储库
安装yum-utils
软件包(提供yum-config-manager
工具),并设置资源库。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker Engine
- 安装Docker Engine、containerd和Docker Compose:
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果提示接受GPG密钥,验证指纹是否与060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
相匹配,如果是,就接受它。
这条命令安装了Docker,但它并没有启动Docker。它还创建了一个docker
组,但是,默认情况下,它没有添加任何用户到该组。
- 启动Docker
$ sudo systemctl start docker
- 通过运行
hello-world
镜像,验证Docker的安装是否成功。
$ sudo docker run hello-world
这个命令会下载一个测试镜像并在一个容器中运行。当容器运行时,它会打印出一条确认信息并退出。
现在你已经成功安装并启动了Docker Engine。
使用RPM包进行安装
如果你不能使用Docker的rpm
仓库来安装Docker Engine,你可以下载符合你期望的版本的.rpm
文件并手动安装。每次你想升级Docker Engine时,你都需要下载一个新的文件。
-
进入Docker官网下载界面,选择你的CentOS版本。然后浏览
x86_64/stable/Packages/
,下载你要安装的Docker版本的.rpm
文件。 -
安装Docker Engine,将下面的路径改为你下载Docker包的路径。
$ sudo yum install /path/to/package.rpm
Docker已经安装,但没有启动。创建了docker组,但没有用户被添加到该组。
- 启动Docker
$ sudo systemctl start docker
- 通过运行
hello-world
镜像,验证Docker Engine的安装是否成功。
$ sudo docker run hello-world
这个命令会下载一个测试镜像并在一个容器中运行。当容器运行时,它会打印出一条确认信息并退出。
现在你已经成功安装并启动了Docker Engine。
使用脚本安装
Docker在https://get.docker.com/,提供了一个方便的脚本,可以将Docker非交互式地安装到开发环境。不建议在生产环境中使用该便利脚本,但它对创建符合你需求的配置脚本很有用。该脚本的源代码是开源的,你可以在GitHub上的docker-install
找到它。
在本地运行从互联网上下载的脚本之前,一定要检查它们。在安装之前,要让自己熟悉潜在的风险和便利脚本的限制:
- 该脚本需要
root
或sudo
权限才能运行。 - 该脚本试图检测你的Linux发行版和版本,并为你配置你的软件包管理系统。
- 脚本不允许你自定义大多数安装参数。
- 脚本在安装依赖关系和建议时不要求确认。这可能会安装大量的软件包,这取决于你主机的当前配置。
- 默认情况下,该脚本会安装Docker、containerd和runc的最新稳定版本。当使用该脚本配置机器时,这可能会导致Docker的主要版本意外升级。在部署到生产系统之前,一定要在测试环境中测试升级。
- 这个脚本并不是用来升级现有的Docker安装的。当使用该脚本更新现有的安装时,依赖关系可能不会被更新到预期的版本,从而导致过时的版本。
你可以用-dry-run选项来运行脚本,了解脚本在被调用时将运行哪些步骤:
点击查看代码
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run
以下这个例子是从https://get.docker.com/下载脚本,并运行该脚本以在Linux上安装最新的Docker稳定版:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
你现在已经成功安装并启动了Docker Engine。在基于Debian的发行版上,docker
服务会自动启动。在基于RPM
的发行版上,如CentOS、Fedora、RHEL或SLES,你需要使用适当的systemctl
或service
命令手动启动它。如信息所示,非root用户默认不能运行Docker命令。