在 Ubuntu 上安装 Docker(4 种简单方法)
已发表: 2022-12-05Docker 是一种流行的工具,用于在称为容器的包中开发和部署软件。 Ubuntu 是最流行的 Linux 发行版之一,也是 Docker 良好支持的操作系统。
在 Ubuntu 上安装 Docker 为您的开发项目创建了一个理想的平台,使用共享 Ubuntu 操作系统内核的轻量级虚拟机。 本教程将通过解释实现这一目标的 4 种方法来帮助您入门。
更多关于 Docker
Docker 让您可以在任何 Docker 主机上构建和运行应用程序,从而帮助实现应用程序的可移植性。 容器镜像可以在任何 Docker 可用的地方使用而无需修改——从你的笔记本电脑到云端。 这通过消除运行时环境之间的差异简化了开发人员的体验。 容器格式也很容易分布在多个物理机器上,使您能够轻松扩展应用程序以响应不断变化的需求。
Docker 包含构建和运行容器映像所需的一切,无论它们来自 Docker Hub 和其他公共注册表,还是您自己的 Dockerfile。
准备在 Ubuntu 上安装 Docker
您可以在 Ubuntu 版本 18.04、20.04、21.10 和 22.04 上安装最新的 Docker 版本。 支持 x64_64/AMD64、ARMhf、ARM64 和 S390x 架构。
您可以通过多种方式安装 Docker,您的选择将取决于您需要的功能和您首选的包管理方法。 您将在本指南中了解所有可能的选项。
文选择 Docker 风味
Linux 上的 Docker 传统上仅限于终端。 一个正常运行的安装包括 Docker Engine,一个运行容器的守护进程,以及用于与守护进程交互的docker
命令行界面 (CLI)。
Docker Desktop 是使用 Docker 的另一种方式。 它以前仅在 Windows 和 Mac 上可用,于 2022 年 5 月针对 Linux 推出。Ubuntu 上的 Docker Desktop 需要 AMD64 处理器和 Ubuntu 21.10 或 22.04。 它提供用于管理容器的图形界面、集成的 Kubernetes 集群以及对第三方扩展的支持。 Docker Desktop 还为您提供了docker
和 Docker Compose CLI。
Docker Desktop 与 Docker Engine 的不同之处在于它使用虚拟机来运行您的容器(这就是 Windows 和 MacOS 用户需要 Docker Desktop 的原因)。 尽管可以在 Ubuntu 上同时使用这两种版本,但您可能会发现docker
CLI 版本之间存在冲突。 最好选择一个并坚持下去。 如果您对自己的终端感到满意并希望获得最佳支持和性能,请选择 Docker Engine。 Docker Desktop 的 VM 使其稍重一些,但如果您想要一个集成的 UI 或计划使用 Kubernetes,它是更好的选择。
在 Ubuntu 上安装 Docker 引擎
Docker 引擎是在 Ubuntu 上运行 Docker 的标准方式。 它适用于所有受支持的版本和环境,从本地 Ubuntu 桌面计算机到您的 Ubuntu 服务器云主机。 在继续之前,请确保您运行的是 18.04 或更高版本的 Ubuntu 版本。
Docker Engine有3种不同的安装方式:
- 官方 Ubuntu
apt
存储库 - 独立的 Debian 软件包 (
.deb
) - 自动安装脚本
选项 1,即 Ubuntu apt
存储库,是最常用的。 它将 Docker 添加到你的包列表中,这样你就可以通过运行apt upgrade
轻松安装未来的更新。 选项 2 不支持自动更新,但非常适合在气隙离线系统上安装 Docker。 自动安装脚本是最简单的入门方法,但仅供开发使用。 Docker 建议不要在生产环境中使用它。
当您使用生产系统、想要轻松更新或需要在所有环境中使用相同的机制时,请使用apt
存储库。
如果您想在自己的机器上试验 Docker 时获得快速设置体验,请使用自动安装脚本。
1. 使用 apt 存储库安装 Docker
Docker 将包发布到它自己的apt
存储库。 您需要将此存储库添加到您的apt
源列表中,否则,您的apt
安装将无法找到 Docker 包。
首先更新现有的包列表并为以下步骤安装一些依赖项。 ca-certificates
、 curl
、 gnupg
和lsb_release
工具将用于为您的系统下载正确的 Docker apt
存储库详细信息和签名密钥。 尽管您可能已经获得了这些包,但确保它们可用也无妨。
$ sudo apt update $ sudo apt install ca-certificates curl gnupg lsb-release
接下来,使用 apt 注册 Docker 的 GPG 密钥环。 这将使apt
验证您安装的 Docker 包。
$ sudo mkdir -p /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
curl
命令为 Ubuntu 下载 Docker 的 GPG 密钥,将其转换回标准的 OpenGPG 编码,并将其保存到 apt 的密钥环目录中。 chmod
用于设置密钥环文件的权限,以便apt
可靠地检测到它。
现在您可以将 Docker 包源添加到您的系统中。 运行以下命令:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
这使用 shell 替换来自动检测系统的体系结构,例如 AMD64 或 ARM64,并下载适当的包列表。 它将使用之前添加的 GPG 密钥进行验证。 存储库作为新包列表添加到apt /etc/apt/sources.list.d directory.
再次更新您的包列表,以便apt
知道 Docker 包存在:
$ sudo apt update
现在您可以使用apt install
命令将 Docker 的组件添加到您的系统中。 您将安装最新版本的 Docker 社区版 (CE)。 需要安装三个包:
-
docker-ce
:Docker 引擎守护进程。 -
docker-ce-cli
:您将与之交互的 Docker CLI。 -
containerd.io
:称为 containerd 的容器运行时,它启动并运行您的容器。
$ sudo apt install docker-ce docker-ce-cli containerd.io
2. 使用 Debian 包安装 Docker
官方.deb
包易于设置,但您必须手动下载并安装每个新版本。 包托管在一个简单的文件服务器上。 首先导航到 Docker 的发行说明页面,找到最新的可用版本号,例如 20.10.20。 接下来,也可以前往 containerd 的 GitHub 页面查看其版本号。 它看起来像 1.6.8。
现在您可以运行以下命令序列来为您的平台下载正确的软件包集。 将<DOCKER_VERSION>
和<CONTAINERD_VERSION>
分别替换为当前的 Docker 和 containerd 版本号。
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce.deb $ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce-cli_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce-cli.deb $ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/containerd.io_<CONTAINERD_VERISON>-1_amd64.deb -o containerd.deb
您还可以通过在浏览器中访问您的 Ubuntu 版本的目录列表来下载文件并检查所有可用版本。
下载 Docker CE、CLI 和 containerd 包后,使用以下命令安装它们:
$ sudo apt install ./docker-ce.deb ./docker-ce-cli.deb ./containerd.deb
如果您在没有使用上面提供的脚本的情况下手动下载了软件包,请调整文件名。
3.使用安装脚本安装Docker
Docker 的便利脚本自动安装所有 Docker 组件。 它是非交互式的,因此您可以坐等系统为您准备好。
首先下载脚本:
$ curl -fsSL https://get.docker.com -o get-docker.sh
现在以 root 权限运行脚本:
$ sudo sh get-docker.sh Executing docker install script ...
等待脚本完成。 您应该会看到一条确认消息,显示 Docker 已安装。
该脚本旨在成为一种放之四海而皆准的解决方案。 如果不直接修改脚本的源代码,您就无法自定义它的功能。 它也不是为执行 Docker 更新而设计的,因为它不会将依赖项更新到最新版本。
确保 Docker 引擎在 Ubuntu 上运行
无论您使用哪种安装方法,您都应该通过启动容器来确保一切正常:
$ sudo docker run hello-world
您会看到 Docker 客户端从 Docker Hub 存储库中将hello-world:image
拉到您的机器上:
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625 Status: Downloaded newer image for hello-world:latest
然后一个新容器将自动启动。 “hello-world”启动镜像被配置为运行一个简单的命令,输出一些关于 Docker 的基本信息,然后立即退出:
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
看到上面显示的输出意味着 Docker 已经可以使用了。 守护进程成功地从 Docker Hub 中提取了 hello-world:latest 图像,并使用它启动了一个容器。 从“Hello from Docker”行开始的所有内容都是由容器内的进程发出的。
在 Ubuntu 上设置 Docker 引擎权限
全新的 Docker Engine 安装通常需要 root 权限才能运行docker
CLI 命令。 您需要在每个命令前加上sudo
前缀,这很不方便。
在使用上述步骤安装 Docker Engine 后,您可以通过将自己添加到docker
组来避免此要求。 此可选更改为您提供了以普通用户身份运行docker
命令的权限,无需sudo
,从而简化了您的 CLI 体验。
确保docker
用户组存在:
$ sudo groupadd docker
然后将自己添加到其中:
$ sudo usermod -aG docker $USER
如果您之前使用sudo
运行过任何docker
命令,则需要修复~/.docker
目录的权限:
$ sudo chown $USER:$USER /home/$USER/.docker -R $ sudo chmod g+rwx $HOME/.docker -R
这确保允许您自己的用户帐户读取和写入目录中的文件。
注销您的系统并重新登录,以便您的新组成员资格生效。 尝试在没有sudo
的情况下运行docker
命令:
$ docker run hello-world
此安装后步骤完成了 Ubuntu 上的 Docker 安装过程。 守护进程已经配置为自动启动,因此您不必手动设置服务。 如果您计划进行高级安装,请参阅 Docker 用户手册,了解有关如何配置自定义网络、日志记录和卷存储管理的说明。
将 Docker Compose 添加到您的 Ubuntu 安装
Docker Compose 是一种流行的 Docker 配套工具,可以更轻松地处理使用多个容器的应用程序。 虽然docker
CLI 的每个命令仅针对一个容器,但docker compose
可以通过每个操作启动和停止多个容器。 这简化了管理具有独立前端、后端和数据库服务的系统。
Docker Compose 现在作为docker
CLI 的一部分提供。 使用官方安装脚本安装Docker时会包含Compose V2插件。 如果您使用该方法,它也可以在apt
中使用:
$ sudo apt install docker-compose-plugin
或者,您可以下载最新的.deb
存档并手动安装:
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-compose-plugin_2.6.0~ubuntu-focal_amd64.deb -o docker-compose-plugin.deb $ sudo apt install -i ./docker-compose-plugin.deb
通过尝试docker compose version
命令检查 Compose 是否正常工作:
$ docker compose version Docker Compose version v2.6.0
在 Ubuntu 上安装 Docker 桌面
虽然 Docker Engine 仅限于仅 CLI 体验,但 Docker Desktop 提供图形管理界面、内置 Kubernetes 支持和可选的第三方扩展,可帮助简化您的容器工作流程。 当您希望在自己的工作站上轻松使用时,这是一个不错的选择。
要安装 Docker Desktop,首先使用apt
安装一些依赖项:
$ sudo apt update $ sudo apt install ca-certificates curl gnupg lsb-release
接下来,运行以下一组命令来添加 Docker 的apt
存储库。 尽管 Docker Desktop 不包含在存储库中,但其中的包被 Desktop 的 Debian 存档引用为依赖项。
$ sudo mkdir -p /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 $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt update
curl
命令为 Ubuntu 下载 Docker 的 GPG 密钥,将其转换回标准的 OpenGPG 编码并将其保存到apt
密钥环目录。 chmod
用于设置密钥环文件的权限,以便apt
可靠地检测到它。
从文档中的链接下载 Docker Desktop Debian 存档。 这将提供适用于 Linux 的 Docker Desktop 的最新稳定版本。 使用apt
安装包,替换为您下载的版本号:
$ sudo apt install ./docker-desktop-4.11.0-amd64.deb
Docker Desktop 现在将显示在您的应用程序启动器中。 使用启动器启动 Docker Desktop 并打开 UI。 您也可以在终端中运行docker
、 docker docker compose
和kubectl
命令。 该应用程序还会向您的 shell 托盘添加一个菜单,显示当前 Docker Desktop 状态并让您执行一些快速操作。
首次运行 Docker Desktop 时,系统会提示您接受服务协议。 如果您同意,请按接受按钮,然后等待 Docker Desktop 启动其虚拟机。
片刻之后,仪表板将加载。 它提供了从流行图像创建新容器的快捷方式,避免了冗长的终端命令。
DevKinsta:用于 WordPress 的 Docker 桌面
在 Docker 的基础上构建的专业解决方案为特定技术提供了更轻松的体验。 DevKinsta 是一个免费的本地开发工具,用于构建 WordPress 主题和插件,它使用 Docker 来完全隔离和保护您的 WordPress 站点。 它使启动和自定义新的 WordPress 项目变得快速而简单,而无需您自己设置服务器。 准备就绪后,您可以直接推送到 Kinsta 平台以部署您的实时站点。
您可以在 MacOS、Windows 和 Ubuntu 上安装 DevKinsta。
特概括
Docker 是大多数开发人员开始使用容器的方式。 您可以轻松地在您的 Ubuntu 系统上安装 Docker,作为 Docker Engine 或新的 Docker Desktop。 安装 Docker 后,您将完全具备构建和运行容器的能力,从而简化开发并减少环境之间的差异。
如果您正在开发 WordPress 主题和插件,DevKinsta 可以简化创建本地开发环境和部署站点的过程。