跳至主要内容

在 Ubuntu 上安装 Docker:从设置到第一个容器

从全新系统安装到运行您的第一个容器化应用,只需几条命令。通过这份终极指南,掌握在 Ubuntu 上设置 Docker 的方法。
· 11分钟 阅读

使用 AI 探索

如果您不想再说“在我机器上可以跑”,容器化就是正确的方向。

简单来说,容器化可以将您的应用封装进一种轻量、隔离的运行环境,称为容器。容器包含运行应用所需的一切,例如代码和依赖项,但不包含多余内容。无论是在您的笔记本、测试服务器还是生产环境,容器化应用都能在不同环境中一致运行。

Docker 仍是 2025 年容器化应用的首选平台。它可运行于任何操作系统,但与大多数开发工具一样,基于 UNIX 的系统更受青睐。

在本文中,您将学习如何在 Ubuntu 上安装 Docker、启动您的第一个容器,以及管理和监控正在运行的容器。

设置过程很直接,但涉及几个步骤。让我们开始吧!

Docker 和 Kubernetes 是一回事吗?这里有每位开发者都该了解的所有差异。

准备您的 Ubuntu 系统

在 Ubuntu 上安装 Docker 之前,有一些准备工作需要完成。本节将带您逐一处理。

首先,确保您正在运行 Ubuntu 系统,桌面版或服务器版均可。我们使用的是Ubuntu Server 24.04:

操作系统详情

图片 1 - 操作系统详情

如果您看到的输出与上图类似,就可以继续了。

检查系统要求

在安装 Docker 之前,请确保您的系统资源足以运行它。

虽然 Docker 官网未给出最低配置(兼容 CPU 架构除外),但我们发现以下规格足以运行 Docker 本身:

  • 操作系统: Ubuntu Desktop/Server 20.04 或更高版本  
  • CPU 架构: 64 位(x86_64 或 arm64)  
  • 内存: 512 MB RAM  
  • 存储: 5 GB  

具备上述配置的机器可以运行 Docker,但空间不大。不要指望运行复杂的容器或多容器应用。

如果您有更高需求,建议至少配备2 GB RAM、25 GB 存储空间,以及一颗现代 CPU。

更新您的 Ubuntu 系统

我们在全新的 Ubuntu Server 实例上运行 Docker,因此将提供设置 Docker 先决条件所需的全部命令。

首先,运行以下命令更新系统的软件包列表并升级现有软件包:

sudo apt update && sudo apt upgrade -y

该过程可能需要几分钟,但能确保您的包管理器获取最新的软件包版本和安全更新。

确保先决条件

Docker 需要一些依赖项才能正确安装和运行。运行此命令进行安装:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

简而言之,上述命令启用通过 HTTPS 下载软件包,并安装获取 Docker GPG 密钥所需的工具(稍后会介绍)。

就这些——您的系统已经准备好安装 Docker!

在 Ubuntu 上安装 Docker

在完成系统先决条件后,在 Ubuntu 上安装 Docker 分为四步。

步骤 1:添加 Docker 官方 GPG 密钥

Docker 的 GPG(GNU Privacy Guard)密钥用于对 Docker 软件包和仓库进行签名,以确保 Docker 镜像和软件包的完整性与可信度。

先运行相应的 Shell 命令下载密钥,并将转换后、与 APT 兼容的版本存储到 /usr/share/keyrings:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

步骤 2:添加 Docker 官方 APT 仓库

现在,将 Docker 官方仓库添加到您的系统。

下面的命令使用先前存储的 GPG 密钥验证仓库的真实性,并将其加入系统软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.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

步骤 3:安装 Docker

现在仓库已配置完毕,您可以在 Ubuntu 上安装 Docker 了。

安装命令将安装核心 Docker 引擎、其命令行界面以及用于管理容器执行的运行时:

sudo apt install -y docker-ce docker-ce-cli containerd.io

安装完成后,您应看到确认安装成功的输出:

Docker 安装结果

图片 2 - Docker 安装结果

步骤 4:验证 Docker 安装

现在 Docker 应已安装在您的系统上。

要进行验证,请在控制台打印 Docker 版本。如果安装成功,您应看到显示的版本号:

docker --version

已安装的 Docker 版本

图片 3 - 已安装的 Docker 版本

截至 2025 年 1 月下旬,Docker 版本 27.5.1 为最新版本,我们已在 Ubuntu Server 上成功运行。

安装后的步骤

现在您已经安装了 Docker,可以开始对应用进行容器化。

但什么是容器化?我们的容器化与虚拟化概念课程将教您基础知识。

在此之前,我们建议再进行三个配置步骤,以发挥最大效果。如果您希望在系统启动时运行 Docker,或以非 root 用户管理 镜像和容器,本节适合您。

步骤 1:启动并启用 Docker 服务

Docker 服务当前在您的系统上运行,但在重启后不会自动启动。

为确保Docker 在开机时自动启动,使用 systemctl 启用服务:

sudo systemctl enable docker

您应看到与我们的输出类似的结果:

启用 Docker 开机自启

图片 4 - 启用 Docker 开机自启

将来,如果您看到提示 Docker 未在运行(理论上不应发生),可以使用以下命令手动启动 Docker:

sudo systemctl start docker

只要系统通电,Docker 就会保持运行。

步骤 2:检查 Docker 状态

还有一些 systemctl 命令可用于管理 Docker 服务。

例如,status 命令用于显示服务状态,最常见的是active(活动)、inactive(非活动)或failed(失败)。尽管还有其他可能状态,但这三种最常见:

sudo systemctl status docker

Docker 服务状态

图片 5 - Docker 服务状态

如果 Docker 服务为 active,说明一切运行正常。

如果您看到 Docker 或其他服务为不同状态,重启通常可以解决问题:

sudo systemctl restart docker

重启后,您可以再次检查状态以确认服务已运行。

步骤 3:以非 root 用户管理 Docker

默认情况下,运行 Docker 命令需要 sudo,这会比较不便。这意味着您必须在任何 docker 命令前输入 sudo。

幸运的是,有一个简单方法允许非 root 用户运行 Docker 命令——将当前用户加入docker 组:

sudo usermod -aG docker $USER

运行上述命令后,请注销并重新登录以使更改生效。此后,您应能在无需超级用户权限的情况下运行 Docker 命令。

我们将在下一节进行验证。

测试 Docker 安装

Docker 现已安装并完成配置。它也会在开机时自动运行,并允许您的用户直接执行命令。

本节我们将通过运行两个容器来收尾——一个用于简单的 “Hello, World!” 示例,另一个用于运行 Python 脚本。

步骤 1:运行测试 Docker 容器

Docker 提供了一个名为 hello-world 的简单测试镜像,专用于确认 Docker 是否正常工作。

运行以下命令启动该镜像:

docker run hello-world

由于本地未找到镜像,Docker 将自动从网络下载。片刻之后,您应看到类似如下的输出:

Docker hello world 示例

图片 6 - Docker hello world 示例

简而言之,这确认了 Docker 安装正确、Docker 守护进程在运行,并且您的系统可以从 Docker Hub 拉取镜像。

步骤 2:运行您的第一个“真实”容器

如果您想从零开始构建镜像,本节适合您。

我们将构建一个运行 Python 3.9 的简单镜像,启动后会执行一个自定义的 Python 脚本。

先创建一个专用文件夹和将被执行的 app.py 文件:

mkdir python-docker-test && cd python-docker-test
nano app.py

该文件只包含一个简单的 print() 命令,当然,您也可扩展为更复杂的逻辑:

print("Hello from Docker running on Ubuntu!")

在同一文件夹中创建 Dockerfile,用于逐步告诉 Docker 如何构建镜像:

nano Dockerfile

只需以下三行:

FROM python:3.9-slim
COPY app.py /app.py
CMD ["python", "/app.py"]

本质上,Docker 将从 Docker Hub 获取 python:3.9-slim 镜像,把 app.py 脚本复制到容器中,然后运行该脚本。

此时,您的工作目录中应包含以下文件:

示例 Python 应用内容

图片 7 - 示例 Python 应用内容

要构建镜像,运行以下命令:

docker build -t python-hello .

上述命令会在当前目录(.)创建一个新镜像,并赋予标签 python-hello。

构建 Docker 镜像

图片 8 - 构建 Docker 镜像

要运行该镜像,使用 docker run 命令并跟上镜像标签。可选的 --rm 标志会在容器退出后将其移除,而这会在 Python 脚本执行完毕后立即发生:

docker run --rm python-hello

在 Docker 中运行 Python 脚本

图片 9 - 在 Docker 中运行 Python 脚本

就这样,您已在 Ubuntu 上使用 Docker 成功将第一个 Python 应用容器化!

如果您在寻找 Docker 在机器学习中的应用,推荐阅读 DataCamp 的容器化:面向机器学习的 Docker 与 Kubernetes。

在 Ubuntu 上更新与卸载 Docker

在自有环境中运行 Docker 让您拥有完全的控制权,但也意味着您需要跟进最新更新、新功能和安全补丁。

本节说明如何执行基本任务,例如更新 Docker 以及将其从系统中完全移除。

更新 Docker

更新 Docker 主要分两步:

  • 更新软件包列表以获取 Docker 的最新版本。
  • 将 Docker(核心、CLI 及容器管理运行时)升级至最新版本。

在终端运行以下命令以在 Ubuntu 上更新 Docker:

sudo apt update
sudo apt upgrade -y docker-ce docker-ce-cli containerd.io
docker --version

docker -- version 命令将显示当前安装的版本。这是验证 Docker 是否成功更新的最简便方法。

卸载 Docker

如果您需要从系统中移除 Docker,应先卸载 Docker 及相关软件包,并删除所有残留的 Docker 相关文件和配置。

此外,您还可以选择性地从 APT 源中移除 Docker 仓库。

以下四条命令将把 Docker 从您的 Ubuntu 系统中卸载,但请注意,只有前三条是必需的:

sudo apt remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# Optional
sudo rm /etc/apt/sources.list.d/docker.list

运行这些命令后,再执行 docker --version 应返回错误,表示 Docker 已不再安装。

在 Ubuntu 上使用 Docker 的最佳实践

管理 Docker 需要持续维护,因为清理未使用的资源并监控性能是您的责任。

本节将介绍在 Ubuntu 上运行 Docker 时应定期执行的两项关键日常维护任务。

定期清理 Docker 资源

随着时间推移,未使用的 Docker 镜像、容器、网络和卷会不断累积,消耗大量磁盘空间。

清理这些资源称为清理(pruning),尽管详细解释超出本文范围。

只需记住这个命令——它会一次性移除所有未使用的容器、镜像、卷和网络:

docker system prune -a -f

资源清理

图片 10 - 资源清理

我们这里只回收了 10 kB,但在更“严肃”的环境中,该命令常常能释放数十 GB 的磁盘空间。

加固您的 Docker 安装

我们已讨论了两个重要的安全主题——保持 Docker 更新以及管理超级用户权限。

此外,以下做法也能提升 Ubuntu 上 Docker 的安全性:

  • 限制容器权限: 尽可能避免使用 --privileged 标志运行容器,因为它会禁用许多将容器与宿主系统隔离的安全检查。
  • 仅使用官方与可信镜像: 不要从未经验证的第三方仓库拉取镜像。请坚持使用 Docker Hub 和私有仓库等可信来源。
  • 启用 Docker Content Trust(DCT): 设置该环境变量可确保只使用已签名和验证的镜像。

监控 Docker 性能

Docker CLI 包含强大的工具,帮助您监控容器性能并识别潜在问题。

在深入使用之前,先修改 app.py 文件,使其在容器启动后保持运行:

import time

time.sleep(10000)
print("Hello from Docker running on Ubuntu!")

原因很简单——我们需要一个正在运行的容器来监控其性能。

先从 ps 命令开始。简单来说,它会列出当前所有正在运行的容器:

docker ps

正在运行的 Docker 容器

图片 11 - 正在运行的 Docker 容器

虽然输出信息不多,但 CONTAINER ID 字段对于进一步检查至关重要。

接下来看看 stats 命令,它会显示所有正在运行容器的实时资源使用情况,包括 CPU、内存和网络消耗:

docker stats

容器统计信息

图片 12 - 容器统计信息

如果您需要容器资源使用和配置的详细分解,请使用 inspect 命令。

只需提供容器 ID:

docker inspect <container_id>

容器详细信息

图片 13 - 容器详细信息

如果您在使用某个 Docker 容器时遇到问题,logs 命令可帮助诊断问题并可能识别其原因。

同样需要提供容器 ID:

docker logs <container_id>

终端显示容器日志

图片 14 - 容器日志

有时您可能需要直接连接到正在运行的容器。如果您知道容器 ID,这很简单:

docker exec -it <container_id> bash

终端显示容器日志

图片 15 - 容器日志

上述命令会在指定的 Docker 容器内打开一个 Shell,允许您直接访问或修改文件。

总结:在 Ubuntu 上使用 Docker

今天,您学习了如何在 Ubuntu 上安装、配置和管理 Docker。

如果您跟着每一步操作,现在系统上应已运行 Docker,并可在开机时自动启动、且无需超级用户权限即可管理容器。您还学习了如何验证 Docker 安装、运行测试容器,甚至构建第一个自定义的 Python 容器化应用。

内容很多,但这只是开始。关于容器化还有更多内容,强烈建议查看我们的官方资源,以熟练掌握 Docker:

FAQs

Docker 有什么用?

Docker 用于将应用自动部署到轻量级容器中,这些容器将应用及其依赖封装在一个可复现、与宿主环境无关的隔离环境中。

Ubuntu 适合运行 Docker 吗?

Ubuntu(桌面版和服务器版)都是运行 Docker 的绝佳选择。它是广受开发者喜爱的稳定 Linux 发行版。话虽如此,您也可以在其他 Linux 发行版上运行 Docker。

为什么要使用 Docker?

Docker 的优势在于为开发/测试/生产提供一致的环境、更快的应用部署和更易于扩展,同时让应用更容易在不同环境与系统之间迁移。

Docker 与虚拟机有什么区别?

Docker 容器共享宿主系统的操作系统内核和资源,因此比虚拟机更轻量、更快。虚拟机运行独立的操作系统,需要更多系统资源。

如何判断 Docker 是否正常工作?

您可以先运行 docker –version 命令检查是否安装了 Docker。此外,运行 hello-world 这样的简单测试容器也能验证 Docker 是否可用。

Dario Radečić

作者

Dario Radečić

常驻克罗地亚的高级数据科学家。顶级科技写作者,已发表 700 多篇文章,累计获得超过 1,000 万次阅读。著有《使用 TPOT 实现机器学习自动化》。

主题