Ubuntu 系统安装Docker完整实操指南

作者:很菜不狗2026.11.06 22:10浏览量:0

简介:本文围绕Ubuntu环境下Docker引擎及Compose插件的安装展开,提供从环境准备、依赖配置、仓库添加到组件安装与验证的完整流程。通过清晰的命令示例与常见问题说明,帮助读者在Ubuntu上快速搭建可靠的容器运行环境,同时涵盖国内镜像加速配置、权限管理与卸载清理等实用技巧,适合开发者与运维人员参考。

一、安装前的环境检查与准备

在正式安装之前,建议先对当前Ubuntu系统的基础状态进行确认,以避免后续步骤中因环境差异产生的兼容性问题。首先,请确保系统已连接互联网,并拥有sudo权限的普通用户账户。Docker官方目前支持Ubuntu的长期支持版本(如20.04、22.04、24.04),对于非LTS版本,虽然多数情况下可正常安装,但可能无法获得官方完整的技术支持与安全更新。

执行以下命令检查系统版本、内核版本及架构类型:

  1. lsb_release -a
  2. uname -r
  3. dpkg --print-architecture

架构信息至关重要,后续添加软件源时需要明确指定amd64、arm64等架构标识。此外,建议清理系统内可能存在的旧版Docker残留(如docker.io或docker-engine),使用命令sudo apt remove docker docker-engine docker.io containerd runc进行移除,避免版本冲突。

二、添加Docker官方软件源(核心步骤)

由于Ubuntu默认软件源中不包含最新版Docker,因此必须手动配置官方APT仓库。此过程分为三步:安装基础依赖工具、导入GPG密钥、写源文件。

第一步:安装必要的依赖包

  1. sudo apt update
  2. sudo apt install -y ca-certificates curl gnupg lsb-release

其中,ca-certificates用于验证HTTPS连接,curl负责下载密钥文件,gnupg用于密钥的导入与解密,lsb-release则用于获取当前系统的发行版代号(如jammy、noble)。

第二步:导入Docker官方GPG密钥

  1. sudo mkdir -p /etc/apt/keyrings
  2. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

此处将远程密钥文件转换为gpg格式,并存储于专用目录。chmod权限设置并非必须,但出于安全考虑可执行sudo chmod a+r /etc/apt/keyrings/docker.gpg以允许所有用户读取。

第三步:写入APT软件源配置文件

  1. echo \
  2. "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  3. https://download.docker.com/linux/ubuntu \
  4. $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

此命令动态获取当前架构与系统代号,确保源地址准确无误。若网络访问download.docker.com较慢,可考虑使用某云厂商提供的镜像加速源(将URL替换为镜像地址),但需注意GPG密钥路径保持一致。

第四步:更新软件包索引并验证源生效

  1. sudo apt update
  2. apt-cache policy docker-ce

若输出结果显示docker-ce存在且候选版本非空,则说明源配置成功。

三、安装Docker引擎及核心组件

完成源配置后,即可开始安装。Docker引擎由多个组件构成,包括守护进程(docker-ce)、命令行客户端(docker-ce-cli)、容器运行时(containerd.io)以及用于构建镜像的插件(docker-buildx-plugin)和用于编排的插件(docker-compose-plugin)。

执行统一安装命令:

  1. sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装过程会自动拉取依赖包。安装结束后,建议立即启动服务并设置开机自启:

  1. sudo systemctl enable docker
  2. sudo systemctl start docker

使用sudo systemctl status docker查看服务状态,确认显示active (running)。

四、验证安装与运行测试容器

验证Docker是否正常工作的最直接方法,是运行一个轻量级测试镜像。执行:

  1. sudo docker run --rm hello-world

该命令会从仓库拉取hello-world镜像并创建临时容器,若终端输出“Hello from Docker!”及后续说明文字,则表明引擎已正常运作。这里需注意,首次运行可能需要一些时间下载镜像,请耐心等待。

此外,还可通过sudo docker version查看客户端与守护进程版本,通过sudo docker info检查系统全局信息(如存储驱动、Cgroup版本等)。建议确认存储驱动为overlay2,这是目前性能与稳定性最佳的方案。

五、安装与配置Docker Compose插件

按照上述安装步骤,docker-compose-plugin已随引擎一并安装,因此可直接执行:

  1. docker compose version

若输出类似Docker Compose version v2.24.2的信息,则说明插件可用。

如果出于特殊原因需要独立安装二进制版docker-compose(例如在某些脚本或CI环境中固定版本),可参考以下手动方式:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose
  3. docker-compose version

但需注意,手动安装的二进制文件与系统包管理器的升级路径不统一,后续维护可能稍有不便。官方更推荐使用插件方式。

六、免sudo执行Docker命令的配置

默认情况下,执行docker命令需要sudo权限。为提升日常操作便利性,可将当前用户加入docker用户组:

  1. sudo usermod -aG docker $USER

执行后需重新登录或运行newgrp docker使组变更生效。此后无需sudo即可直接运行docker命令。此操作存在一定安全风险——docker组内的用户等同于拥有root权限,因此在多用户服务器上需谨慎决定是否开放。

七、配置镜像加速器(可选但推荐)

在国内网络环境下,拉取镜像可能较慢。可在/etc/docker/daemon.json中配置镜像加速地址:

  1. {
  2. "registry-mirrors": ["https://your-mirror-domain"]
  3. }

保存后执行sudo systemctl restart docker。加速域名可选用某云厂商提供的公共加速服务,但请注意其可用性与稳定性需自行评估。此操作不影响Docker原有功能,仅改变镜像拉取来源。

八、常见问题与故障排查

  1. GPG密钥错误:若执行apt update报错提示密钥无效,可重新执行第二步中的密钥导入命令,并确认/etc/apt/keyrings/docker.gpg文件存在且非空。
  2. 软件源404:通常因系统代号不匹配导致。检查lsb_release -cs输出是否正确,若为rolling或sid等非稳定代号,需手动指定对应版本代号(如jammy)。
  3. 守护进程启动失败:可查看日志journalctl -u docker.service -n 50定位原因,常见问题包括网络防火墙限制或iptables配置冲突。
  4. 容器内网络异常:尝试重启docker服务或重启系统,多数情况下与内核模块或网桥配置有关。

九、总结与后续学习方向

至此,Ubuntu系统上的Docker环境已完整搭建,并验证了基本功能。建议接下来尝试使用docker run -d -p 8080:80 nginx部署一个Web服务,熟悉端口映射与后台运行机制;或通过docker compose up -d编排多容器应用。容器化技术的深入学习涉及镜像构建(Dockerfile编写)、数据卷管理、网络模式选型等,建议结合官方文档与实验逐步推进。

掌握安装仅是起点,理解容器运行原理与资源隔离机制,才是生产环境高效运维的关键。遇到具体问题时,优先使用docker logs、docker inspect等内置诊断工具,往往能快速定位症结。祝你在容器化实践之路上顺利前行。