详细图解 Ubuntu 安装 Docker
Docker 已经成为现代软件开发和部署不可或缺的工具。它允许开发者将应用程序及其所有依赖项打包到一个独立的容器中,从而确保应用程序在任何环境中都能一致运行。本教程将详细介绍如何在 Ubuntu 操作系统上安装 Docker Engine。
1. 什么是 Docker?为什么需要它?
Docker 是一个开源平台,用于开发、发布和运行应用程序。它通过使用容器化技术,将应用程序及其运行所需的所有组件(代码、运行时、系统工具、系统库等)打包到一个轻量级、可移植的单元中。
为什么需要 Docker?
- 环境一致性: 解决了“在我的机器上能运行”的问题,确保开发、测试和生产环境的一致性。
- 快速部署: 容器启动速度快,部署效率高。
- 资源隔离: 每个容器都运行在独立的进程中,与其他容器和主机隔离,提高了安全性。
- 可移植性: 打包好的容器可以在任何支持 Docker 的机器上运行,无需担心底层操作系统的差异。
- 版本控制: 可以像代码一样对 Docker 镜像进行版本控制和管理。
2. 环境准备与先决条件
在开始安装之前,请确保您的 Ubuntu 系统满足以下条件:
- 操作系统: Ubuntu 20.04 LTS (Focal Fossa) 或更高版本。本教程以 Ubuntu 22.04 LTS 为例。
- 用户权限: 拥有
sudo权限的用户账户。 - 互联网连接: 安装过程中需要下载软件包。
准备工作:
打开您的 Ubuntu 终端(可以通过按下 Ctrl + Alt + T 快捷键)。
3. 安装 Docker Engine
我们将通过 Docker 官方存储库来安装 Docker Engine,这是推荐且最稳定的安装方式。
步骤 3.1:更新包索引并安装必要依赖
首先,更新您的本地包索引,并安装一些必要的软件包,这些软件包允许 apt 通过 HTTPS 使用存储库。
命令:
bash
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
图解想象:
sudo apt update执行中: 终端会显示正在从各种存储库下载包列表的信息,例如Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease等。sudo apt install ...执行中: 终端会显示正在解析依赖关系、选择安装包、下载和安装软件包的进度条和信息。例如:Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 ca-certificates all 20230311ubuntu0.22.04.1 [145 kB]。
步骤 3.2:添加 Docker 的官方 GPG 密钥
Docker 使用 GPG 密钥来验证其软件包的真实性。您需要将 Docker 的官方 GPG 密钥添加到您的系统。
命令:
bash
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
图解想象:
sudo mkdir -m 0755 -p /etc/apt/keyrings执行中: 终端可能不会有输出,表示目录已成功创建或已存在。curl -fsSL ... | sudo gpg ...执行中: 终端同样可能不会有明显输出,但命令成功执行后,Docker 的 GPG 密钥文件docker.gpg将会存在于/etc/apt/keyrings/目录下。您可以使用ls -l /etc/apt/keyrings/查看。
步骤 3.3:设置 Docker 存储库
接下来,将 Docker 稳定版的存储库添加到 APT 源列表中。
命令:
bash
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
图解想象:
- 命令执行中: 这条命令会创建或修改
/etc/apt/sources.list.d/docker.list文件。终端通常不会有输出,因为它将输出重定向到了/dev/null。 - 验证(可选): 您可以使用
cat /etc/apt/sources.list.d/docker.list命令来查看该文件的内容,确认 Docker 存储库已正确添加。内容应类似于:deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable(其中jammy对应您的 Ubuntu 版本)。
步骤 3.4:再次更新包索引
在添加了新的存储库之后,需要再次更新 apt 包索引,以便系统能够识别并获取 Docker 存储库中的软件包。
命令:
bash
sudo apt update
图解想象:
sudo apt update执行中: 终端会显示正在从所有配置的存储库(包括新添加的 Docker 存储库)下载包列表。您应该会看到类似Get:6 https://download.docker.com/linux/ubuntu jammy InRelease [48.8 kB]的输出。
步骤 3.5:安装 Docker Engine、CLI 和 Containerd
现在,您可以安装 Docker Engine、Docker CLI (命令行接口) 和 Containerd (容器运行时)。
命令:
bash
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
图解想象:
sudo apt install ...执行中: 终端会显示下载和安装 Docker 相关软件包的详细进度。这可能需要一些时间,取决于您的网络速度。例如:Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 docker-ce-cli amd64 5:24.0.7-1~ubuntu.22.04~jammy [13.2 MB]。- 安装完成: 终端会回到命令提示符,表示安装成功。Docker 服务应该会自动启动。
步骤 3.6:验证 Docker 安装
为了确保 Docker 已成功安装并正在运行,您可以运行官方提供的 hello-world 镜像。
命令:
bash
sudo docker run hello-world
图解想象:
sudo docker run hello-world执行中:- 如果
hello-world镜像不在本地,Docker 会显示正在下载镜像的进度:Unable to find image 'hello-world:latest' in the local cache... Pulling from library/hello-world... - 下载完成后,Docker 会运行容器并输出一条欢迎信息:
Hello from Docker!
This message shows that your installation appears to be working correctly.
... - 最后,终端会显示容器成功运行并退出的信息。
- 如果
如果您看到类似上述的“Hello from Docker!”消息,那么恭喜您,Docker 已成功安装并正常工作!
4. 后续配置(推荐)
为了更方便地使用 Docker,建议进行以下配置。
步骤 4.1:将当前用户添加到 docker 用户组(非必需但强烈推荐)
默认情况下,docker 命令需要 sudo 权限才能运行。这可能会很不方便。将您的用户添加到 docker 用户组后,您就可以在不使用 sudo 的情况下运行 docker 命令。
命令:
bash
sudo usermod -aG docker $USER
图解想象:
- 命令执行中: 终端不会有输出。
- 生效: 这条命令会将当前用户(
$USER环境变量代表您当前的用户名)添加到docker组中。您需要注销并重新登录(或重启系统)才能使更改生效。 - 验证: 重新登录后,尝试再次运行
docker run hello-world,这次不带sudo。
bash
docker run hello-world
如果能够正常运行,说明配置成功。
步骤 4.2:配置 Docker 开机自启动
Docker 服务在安装时通常会自动配置为开机自启动。您可以使用以下命令验证其状态:
验证命令:
bash
sudo systemctl status docker
图解想象:
sudo systemctl status docker输出:- 您会看到详细的服务状态信息。关键是查看
Active: active (running)这一行,这表示 Docker 服务正在运行。 enabled则表示已配置为开机自启动。- 例如:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2026-01-09 10:30:00 UTC; 5min ago
Docs: https://docs.docker.com
Main PID: 1234 (dockerd)
Tasks: 10
Memory: 45.6M
CPU: 123ms
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
- 您会看到详细的服务状态信息。关键是查看
如果 Active 显示为 active (running) 且 Loaded 行显示 enabled,则无需额外操作。如果未 enabled,可以使用以下命令启用:
启用命令(如果需要):
bash
sudo systemctl enable docker
图解想象:
sudo systemctl enable docker执行中: 终端可能会输出类似Created symlink /etc/systemd/system/multi-user.target.wants/docker.service -> /lib/systemd/system/docker.service.的信息,表示已创建自启动链接。
5. 基本 Docker 命令(快速入门)
- 查看 Docker 版本:
bash
docker version - 查看正在运行的容器:
bash
docker ps - 查看所有容器(包括已停止的):
bash
docker ps -a - 拉取镜像:
bash
docker pull ubuntu:latest - 运行容器:
bash
docker run -it ubuntu /bin/bash
(-it允许您进入容器的交互式 shell) - 列出本地镜像:
bash
docker images - 停止容器:
bash
docker stop <container_id_or_name> - 删除容器:
bash
docker rm <container_id_or_name> - 删除镜像:
bash
docker rmi <image_id_or_name>
6. 总结
通过本教程,您已经成功在 Ubuntu 系统上安装了 Docker Engine,并进行了基本的配置和验证。现在,您已经拥有了一个强大的容器化平台,可以开始构建、部署和管理您的应用程序了。
探索 Docker 的更多功能,例如 Docker Compose 用于多容器应用管理,以及 Dockerfile 用于构建自定义镜像。祝您使用 Docker 愉快!