在Ubuntu上安装Docker Engine,首先确保满足先决条件,然后按照安装步骤进行操作。
先决条件:
操作系统要求
- 64位版本的Ubuntu Lunar 23.04、Ubuntu Kinetic 22.10、Ubuntu Jammy 22.04(LTS)、Ubuntu Focal 20.04(LTS)之一。
- x86_64(或amd64)、armhf、arm64、s390x和ppc64le(ppc64el)架构的兼容Docker Engine。
卸载旧版本:
- 在安装Docker Engine之前,必须先确保卸载所有冲突的软件包。
- 发行版维护者提供了Docker包的非官方APT分发。在安装官方版本的Docker Engine之前,必须先卸载这些软件包。
- 要卸载的非官方软件包有:docker.io、docker-compose、docker-doc和podman-docker。
- 此外,Docker Engine依赖于containerd和runc。Docker Engine将这些依赖项捆绑在一起作为containerd.io。如果您以前已经安装了containerd或runc,请卸载它们以避免与与Docker Engine捆绑的版本发生冲突。
- 运行以下命令以卸载所有冲突的软件包:
$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get可能报告您没有安装这些软件包。
存储在/var/lib/docker/中的映像、容器、卷和网络不会在使用卸载Docker时自动删除。如果您希望从干净的安装开始并选择清理任何现有数据,请参阅卸载Docker Engine部分。
安装方法:
- Docker Engine与Linux上的Docker Desktop捆绑在一起提供。这是最简单最快捷的入门方式。
- 从Docker的Apt存储库设置并安装Docker Engine。
- 手动安装和管理升级。
- 使用便捷脚本进行安装。仅推荐用于测试和开发环境。
使用Apt存储库进行安装
在新的主机机器上首次安装Docker Engine之前,需要设置Docker存储库。之后,可以从存储库中安装和更新Docker。
-
设置Docker的Apt存储库。
# 添加Docker的官方GPG密钥: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # 将存储库添加到Apt源中: echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
注意
如果您使用的是Ubuntu派生发行版,例如Linux Mint,则可能需要使用UBUNTU_CODENAME而不是VERSION_CODENAME。 -
安装Docker软件包。
要安装最新版本,请运行:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
通过运行hello-world映像来验证Docker Engine安装是否成功。
$ sudo docker run hello-world
该命令下载一个测试映像并在容器中运行它。当容器运行时,它会打印确认消息并退出。
您现在已经成功安装了并启动了Docker Engine。
提示
尝试在没有root的情况下运行时收到错误?
docker用户组存在,但其中不包含任何用户,这就是为什么需要使用sudo来运行Docker命令的原因。继续进行Linux postinstall以允许非特权用户运行Docker命令和其他可选配置步骤。
升级Docker引擎
要升级Docker Engine,请遵循安装说明中的第2步,选择要安装的新版本。
从软件包安装
如果您无法使用Docker的apt存储库来安装Docker Engine,您可以下载您的发行版的deb文件并手动安装它。每次想要升级Docker Engine时,您需要下载一个新的文件。
跳转到https://download.docker.com/linux/ubuntu/dists
在列表中选择您的Ubuntu版本。
转到pool/stable/ 并选择适用的架构(amd64、armhf、arm64或s390x)。
下载以下Docker Engine、CLI、containerd和Docker Compose软件包的deb文件:
containerd.io
docker-ce
docker-ce-cli
docker-buildx-plugin
docker-compose-plugin
安装.deb软件包。请将以下示例中的路径更新为您下载的Docker软件包的位置。
$ sudo dpkg -i ./containerd.io
./docker-ce
./docker-ce-cli
./docker-buildx-plugin
./docker-compose-plugin
Docker守护进程自动启动。
通过运行hello-world映像来验证Docker Engine安装是否成功。
$ sudo service docker start
$ sudo docker run hello-world
此命令下载一个测试映像并在容器中运行它。当容器运行时,它会打印确认消息并退出。
现在,您已成功安装并启动了Docker Engine。
提示
尝试在没有root权限的情况下运行时收到错误?
docker用户组存在,但其中没有用户,这就是为什么您需要使用sudo来运行Docker命令的原因。继续进行Linux postinstall以允许非特权用户运行Docker命令和其他可选配置步骤。
升级Docker引擎
要升级Docker Engine,请下载较新的软件包文件并重复安装过程,指向新文件。
使用便捷脚本安装
Docker提供了一个便捷的脚本https://get.docker.com/open_in_new, 用于在非交互式环境中将Docker安装到开发环境中。便利脚本不适用于生产环境,但对于创建定制的预配脚本非常有用。还要参考使用存储库步骤中的安装使用存储库步骤,了解如何使用软件包存储库进行安装。该脚本的源代码是开源的,您可以在GitHub上的docker-install存储库中找到它open_in_new。
在本地运行之前,始终检查从互联网下载的脚本。在安装之前,请使自己熟悉便利脚本的潜在风险和限制:
该脚本需要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/open_in_new 下载脚本并在Linux上运行它以安装最新的稳定版Docker:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
执行docker install脚本,提交:7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
现在,您已成功安装了并启动了Docker Engine。Docker服务在基于Debian的发行版上自动启动。在基于RPM的发行版(如CentOS、Fedora、RHEL或SLES)上,您需要使用适当的systemctl或service命令手动启动它。正如消息所示,非root用户默认情况下无法运行Docker命令。
使用Docker作为非特权用户,或以rootless模式安装?
安装脚本需要root或sudo权限才能安装和使用Docker。如果您想授予非root用户访问Docker的权限,请参阅Linux的安装后步骤。您还可以在没有root权限的情况下安装Docker,或配置为以rootless模式运行。有关以rootless模式运行Docker的说明,请参阅以非root用户身份运行Docker守护程序(rootless模式)。
安装预发布版本
Docker还提供了一个便利脚本https://test.docker.com/open_in_new, 用于在Linux上从测试通道安装Docker的预发布版本。此脚本等于get.docker.com上的脚本,但配置您的包管理器以使用Docker软件包存储库的测试通道。测试通道包括Docker的稳定版和预发布版(beta版本、发布候选版本)。使用此脚本可以提前访问新功能,并在正式发布之前在测试环境中对其进行评估。
要从测试通道在Linux上安装最新版本的Docker,请运行:
$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh
升级便利脚本安装的Docker
如果您使用便利脚本安装了Docker,您应该直接使用包管理器升级Docker。重新运行便利脚本没有优势。如果它尝试重新安装主机上已经存在的存储库,重新运行它可能会导致问题。
卸载Docker Engine
卸载Docker Engine、CLI、containerd和Docker Compose软件包:
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
您的主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷,请执行以下操作:
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
您必须手动删除任何编辑过的配置文件。