Ubuntu安装Docker Engine与Compose

本文用于在新的 Ubuntu 24.04 LTS 服务器上安装 Docker Engine 和 Compose 插件,采用系统软件包方式管理。需要能使用 sudo 的管理员账户,以及可访问软件源和镜像仓库的网络。下面不适用于 Windows、宝塔内置 Docker 管理环境,也不用于直接替换正在运行的容器平台。

先确认系统和现有组件

. /etc/os-release
printf '系统:%s %s\n' "$ID" "$VERSION_ID"
dpkg --print-architecture
ps -p 1 -o comm=
command -v docker || true
dpkg-query -W -f='${binary:Package}\t${Status}\n' \
  docker.io docker-compose docker-compose-v2 docker-doc docker-buildx \
  podman-docker containerd runc 2>/dev/null || true
df -h / /var

系统应为 Ubuntu 24.04,主进程为 systemd;按实际架构安装,本例常见为 amd64 或 arm64。若已经有 Docker,或输出出现已安装的 containerd、runc 等组件,先确认由谁维护、是否承载其他业务,再安排迁移或替换,不能为了安装教程直接卸载。磁盘还要预留镜像、容器日志和业务数据的空间。

添加软件源并安装

下面使用 Ubuntu 24.04 的 noble 软件源。先确认 /etc/apt/sources.list.d/docker.sources 不是已有业务使用的配置;若已存在,核对内容,避免覆盖或重复添加。不要把其他 Ubuntu 版本的代号直接套进本例。

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod 0644 /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

每一步成功后再继续。看到签名、证书、下载或依赖错误时,先保存完整报错;不能跳过签名校验,也不能把一次软件下载失败判断为服务器不支持 Docker。此方式安装的是当前仓库提供的版本,安装后应记录实际版本。

确认 Engine、Compose 和容器分别可用

sudo systemctl enable --now docker
sudo systemctl is-active docker
sudo docker version
sudo docker compose version
sudo docker run --rm hello-world
sudo docker info --format '版本={{.ServerVersion}} 存储驱动={{.Driver}} 数据目录={{.DockerRootDir}}'
检查项目 应看到什么
Docker 服务 is-active 返回 active。
客户端与服务端 docker version 同时有 Client、Server 信息;只有 Client 不算服务端可用。
Compose 插件 docker compose version 返回版本;本文使用中间带空格的 docker compose。
首次容器 hello-world 输出确认信息后正常退出;使用 --rm 后,测试容器会自动删除。

hello-world 的容器退出是正常行为,因为它只完成一次输出。以后运行网站、数据库等长期服务,才需要检查是否持续运行。本文统一使用 sudo 执行 Docker,不需要为了跟做给普通账户增加额外权限。

安装后遇到这几种情况

  • 只有 Compose 命令不存在:确认 docker-compose-plugin 已安装,并使用 docker compose,不要混用旧版独立命令。
  • Cannot connect to the Docker daemon:先看服务状态,再执行 sudo journalctl -u docker --since '-15 min' --no-pager,检查最近的启动错误。
  • 拉取镜像超时或解析失败:区分软件源访问和镜像仓库访问,记录失败的域名与错误;保留证书验证,不安装来路不明的替代镜像。
  • 容器端口准备对外开放:先核对绑定地址。Docker 发布的端口与系统防火墙规则存在交互,不应只看 UFW 的状态就认为容器端口已经被拦住。只在本机使用的服务绑定到 127.0.0.1。

后续部署应用时,记录 Compose 文件、镜像版本和持久数据位置。容器已经创建但反复退出,可继续看容器退出与重启排查。