--- outline: [2,5] --- # 在 Ubuntu 上安装 Docker 引擎 要在 Ubuntu 上开始使用 Docker Engine,请确保您 [满足先决条件](#先决条件),然后按照 [安装步骤](#安装方法)进行操作。 ## 先决条件 ### 防火墙限制 :::warning 警告 在安装 Docker 之前,请确保考虑以下安全隐患和防火墙不兼容性。 ::: - 如果您使用 ufw 或firewalld 来管理防火墙设置,请注意,当您使用 Docker 公开容器端口时,这些端口会绕过防火墙规则。有关更多信息,请参阅 [Docker 和 ufw](https://docs.docker.com/engine/network/packet-filtering-firewalls/#docker-and-ufw)。 - Docker 仅与`iptables-nft`和兼容`iptables-legacy`。使用 创建的防火墙规则`nft`在安装了 Docker 的系统上不受支持。确保您使用的任何防火墙规则集都是使用`iptables`或创建的`ip6tables`,并且将它们添加到`DOCKER-USER`链中,请参阅 [数据包过滤和防火墙](https://docs.docker.com/engine/network/packet-filtering-firewalls/)。 ### 操作系统要求 要安装 Docker Engine,您需要以下 Ubuntu 版本之一的 64 位版本: - Ubuntu Oracular 24.10 - Ubuntu Noble 24.04 (LTS) - Ubuntu Jammy 22.04 (LTS) - Ubuntu Focal 20.04 (LTS) Ubuntu 的 Docker Engine 与 x86_64(或 amd64)、armhf、arm64、s390x 和 ppc64le(ppc64el)架构兼容。 ### 卸载旧版本 在安装 Docker Engine 之前,您需要卸载所有有冲突的软件包。 您的 Linux 发行版可能提供了非官方的 Docker 软件包,这些软件包可能会与 Docker 提供的官方软件包冲突。您必须在安装 Docker Engine 正式版之前卸载这些软件包。 要卸载的非官方软件包包括: - `docker.io` - `docker-compose` - `docker-compose-v2` - `docker-doc` - `podman-docker` 此外,Docker Engine 依赖于`containerd`和`runc`。Docker Engine 将这些依赖项捆绑为一个包:`containerd.io`。如果您之前安装了`containerd`或`runc`,请卸载它们以避免与 Docker Engine 捆绑的版本冲突。 运行以下命令来卸载所有冲突的包: ```bash for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done ``` `apt-get`可能会报告您没有安装这些包。 卸载 Docker 时,不会自动删除存储在中的图像、容器、卷和网络`/var/lib/docker/`。如果您想从全新安装开始,并且希望清理所有现有数据,请阅读 [卸载 Docker Engine部分](#卸载DockerEngine部分)。 ## 安装方法 您可以根据需要通过不同的方式安装 Docker Engine: - [Docker Engine 与Docker Desktop for Linux](https://docs.docker.com/desktop/setup/install/linux/)捆绑在一起 。这是最简单、最快捷的入门方式。 - 从[Docker的`apt`](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)存储库设置并安装 Docker Engine 。 - [手动安装](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package)并手动管理升级。 - 使用 [便捷脚本](https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script)。仅推荐用于测试和开发环境。 ### 使用apt存储库安装 在新的主机上首次安装 Docker Engine 之前,您需要设置 Docker `apt`存储库。之后,您可以从存储库安装和更新 Docker。 1. 设置 Docker 的`apt`存储库。 ```bash # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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 ``` ::: info 笔记 如果您使用 Ubuntu 衍生发行版,例如 Linux Mint,则可能需要使用`UBUNTU_CODENAME`而不是`VERSION_CODENAME`。 ::: 2. 安装 Docker 包。 ::: code-group ```bash [最新的] # 要安装最新版本,请运行: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` ```bash [具体版本] # 要安装特定版本的 Docker Engine,请首先列出存储库中的可用版本: # List the available versions: apt-cache madison docker-ce | awk '{ print $3 }' 5:27.4.0-1~ubuntu.24.04~noble 5:27.3.1-1~ubuntu.24.04~noble ... # 或 # 选择所需版本并安装: VERSION_STRING=5:27.4.0-1~ubuntu.24.04~noble sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin ``` ::: 3. 通过运行镜像来验证安装是否成功`hello-world`: ```bash sudo docker run hello-world ``` 此命令下载测试映像并在容器中运行。容器运行时,它会打印一条确认消息并退出。 您现已成功安装并启动了 Docker Engine。 ::: tip 提示 尝试以非 root 身份运行时出现错误? 用户组`docker`存在但不包含任何用户,这就是您需要使用`sudo`来运行 Docker 命令的原因。继续进行 [Linux 安装后操作](https://docs.docker.com/engine/install/linux-postinstall) 以允许非特权用户运行 Docker 命令并执行其他可选配置步骤。 ::: #### 升级 Docker 引擎 要升级 Docker Engine,请按照 [安装说明](#安装方法)的第 2 步进行操作,选择要安装的新版本。 ### 从包中安装 如果您无法使用 Docker 的`apt`存储库来安装 Docker Engine,您可以下载`deb`适合您版本的文件并手动安装。每次要升级 Docker Engine 时,都需要下载一个新文件。 1. 转至 [`https://download.docker.com/linux/ubuntu/dists/`](https://download.docker.com/linux/ubuntu/dists/)。 2. 在列表中选择您的 Ubuntu 版本。 3. 转到`pool/stable/`并选择适用的架构(`amd64`、 `armhf`、`arm64`或`s390x`)。 4. `deb`下载Docker Engine、CLI、containerd 和 Docker Compose 软件包的以下文件: - `containerd.io__.deb` - `docker-ce__.deb` - `docker-ce-cli__.deb` - `docker-buildx-plugin__.deb` - `docker-compose-plugin__.deb` 5. 安装`.deb`软件包。将以下示例中的路径更新为您下载 Docker 软件包的位置。 ```bash sudo dpkg -i ./containerd.io__.deb \ ./docker-ce__.deb \ ./docker-ce-cli__.deb \ ./docker-buildx-plugin__.deb \ ./docker-compose-plugin__.deb ``` Docker 守护进程自动启动。 6. 通过运行镜像来验证安装是否成功`hello-world`: ```bash sudo service docker start sudo docker run hello-world ``` 此命令下载测试映像并在容器中运行。容器运行时,它会打印一条确认消息并退出。 您现已成功安装并启动了 Docker Engine。 :::tip 提示 尝试以非 root 身份运行时出现错误? 用户组`docker`存在但不包含任何用户,这就是您需要使用`sudo`来运行 Docker 命令的原因。继续进行 [Linux 安装后](https://docs.docker.com/engine/install/linux-postinstall)操作 以允许非特权用户运行 Docker 命令并执行其他可选配置步骤。 ::: #### 升级 Docker 引擎 要升级 Docker Engine,请下载较新的软件包文件并重复 [安装过程](#从包中安装),指向新文件。 ### 使用便捷脚本安装 Docker 在[https://get.docker.com/](https://get.docker.com/)上提供了一个便捷脚本, 用于以非交互方式将 Docker 安装到开发环境中。不建议在生产环境中使用该便捷脚本,但它对于创建根据您的需求量身定制的配置脚本很有用。另请参阅 [使用存储库安装](#使用apt存储库安装)步骤以了解使用软件包存储库安装的安装步骤。该脚本的源代码是开源的,您可以在 [`docker-install`GitHub](https://github.com/docker/docker-install) 上的存储库中找到它。 在本地运行从互联网下载的脚本之前,请务必检查这些脚本。在安装之前,请熟悉便利脚本的潜在风险和限制: - 该脚本需要`root`或`sudo`权限才能运行。 - 该脚本尝试检测您的 Linux 发行版和版本并为您配置包管理系统。 - 该脚本不允许您自定义大多数安装参数。 -该脚本无需确认即可安装依赖项和建议。这可能会安装大量软件包,具体取决于主机的当前配置。 - 默认情况下,该脚本会安装 Docker、containerd 和 runc 的最新稳定版本。使用此脚本配置机器时,可能会导致 Docker 意外的主要版本升级。在部署到生产系统之前,请务必在测试环境中测试升级。 - 该脚本并非用于升级现有 Docker 安装。使用该脚本更新现有安装时,依赖项可能不会更新为预期版本,从而导致版本过时。 ::: tip 提示 运行前预览脚本步骤。您可以运行脚本,并可以选择`--dry-run`了解脚本在调用时将运行哪些步骤: ```bash curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh --dry-run ``` ::: 此示例从[https://get.docker.com/](https://get.docker.com/)下载脚本 并运行它以在 Linux 上安装 Docker 的最新稳定版本: ```bash curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737 <...> ``` 您现在已成功安装并启动了 Docker Engine。该`docker` 服务在基于 Debian 的发行版上自动启动。在RPM基于发行版(例如 CentOS、Fedora、RHEL 或 SLES)上,您需要使用适当的`systemctl`或`service`命令手动启动它。如消息所示,非 root 用户默认无法运行 Docker 命令。 ::: tip 以非特权用户身份使用 Docker,还是以无根模式安装? 安装脚本需要`root`或`sudo`权限才能安装和使用 Docker。如果您想授予非 root 用户访问 Docker 的权限,请参阅 [Linux 的安装后步骤](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。您还可以安装没有root权限的 Docker,或将其配置为以无 root 模式运行。有关以无 root 模式运行 Docker 的说明,请参阅 [以非 root 用户身份运行 Docker 守护程序(无 root 模式)](https://docs.docker.com/engine/security/rootless/)。 ::: #### 安装预发布版本 Docker 还在[https://test.docker.com/](https://test.docker.com/?_gl=1*5gbe9g*_gcl_au*MTgwNzAxODEyLjE3MzA3MjE2MDg.*_ga*MzcyMjU0Nzg4LjE3MzA2OTE5MDk.*_ga_XJWPQMJYHQ*MTczNDYwMDA0NC4xMy4xLjE3MzQ2MDAwNjMuNDEuMC4w)上提供了一个便捷脚本, 用于在 Linux 上安装 Docker 的预发布版本。此脚本与 上的脚本相同`get.docker.com`,但会将您的包管理器配置为使用 Docker 包存储库的测试通道。测试通道包括 Docker 的稳定版本和预发布版本(测试版、候选版本)。使用此脚本可以提前访问新版本,并在发布为稳定版本之前在测试环境中对其进行评估。 要从测试渠道在 Linux 上安装最新版本的 Docker,请运行: ```bash curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh ``` #### 使用便捷脚本后升级 Docker 如果您使用便捷脚本安装了 Docker,则应直接使用包管理器升级 Docker。重新运行便捷脚本没有任何好处。如果它尝试重新安装主机上已存在的存储库,则重新运行它可能会导致问题。 ## 卸载 Docker Engine 1. 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包: ```bash sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras ``` 2.主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷,请执行以下操作: ```bash sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd ``` 3. 删除源列表和密钥环 ```bash sudo rm /etc/apt/sources.list.d/docker.list sudo rm /etc/apt/keyrings/docker.asc ``` 您必须手动删除任何已编辑的配置文件。 ## 后续步骤Next steps - 继续 [Linux 的安装后步骤](https://docs.docker.com/engine/install/linux-postinstall/)。