跳到主要内容

Docker 安装与基础配置

这页只整理我现在更愿意默认采用的 Linux 安装流程,重点是 Ubuntu 或其他基于 Debian 的发行版。目标不是覆盖所有发行版,而是先把最常见、最稳妥的一套流程固定下来。

如果你不是 Ubuntu,请直接看 Docker 官方安装文档:

先卸载旧版本或冲突包

如果机器上装过旧版 Docker,先清理掉常见冲突包,再接官方仓库:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y "$pkg"
done

添加 Docker 官方 apt 仓库

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

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

这套写法比旧的 apt-key 更适合现在的 Ubuntu 系统。

安装 Docker Engine 和常用插件

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

这组包基本覆盖了我日常会直接用到的能力:

  • docker-ce:Docker Engine
  • docker-ce-clidocker 命令行
  • containerd.io:底层容器运行时
  • docker-buildx-plugin:更现代的构建能力
  • docker-compose-plugindocker compose 命令

启动并验证 Docker

安装后直接启用并启动服务:

sudo systemctl enable --now docker

建议至少做下面这几步验证:

sudo systemctl status docker
docker version
docker info
docker compose version
sudo docker run --rm hello-world

如果 systemctl status docker 里状态是 active (running),而 hello-world 能拉取并成功运行,说明基础安装基本没问题。

配置非 root 用户使用 Docker

如果你不想每次都写 sudo,可以把当前用户加入 docker 组:

sudo usermod -aG docker $USER
newgrp docker

重新登录后再试:

docker ps

注意:加入 docker 组基本等于获得了对宿主机 Docker 的高权限控制能力,安全性上接近 root。共享机器、多人机器或生产机上不要默认把所有人都加进去。

如果你明确希望避免这一点,可以再看 Docker 官方的 rootless mode:

常见后续配置

1. 镜像加速或其他 daemon 配置

Docker daemon 的常见配置文件路径是:

/etc/docker/daemon.json

例如配置镜像加速器时,常见写法是:

{
"registry-mirrors": ["https://<your-mirror>.example.com"]
}

改完后重启 Docker:

sudo systemctl restart docker

如果你在阿里云上主要是遇到 Docker Hub 拉取慢或失败,可以直接看这篇现成记录:

2. 开机自启

上面用的 enable --now 已经同时完成了“现在启动”和“开机自启”。如果只是单独确认:

sudo systemctl is-enabled docker

安装失败时我会先查什么

如果 Docker 启不来,先不要急着重装,优先看下面几个点:

  1. sudo systemctl status docker
  2. sudo journalctl -u docker.service -n 100 --no-pager
  3. /etc/docker/daemon.json 有没有写错 JSON
  4. 机器能不能正常访问 Docker 仓库或镜像源
  5. 是否和旧版 containerd、旧版镜像源配置冲突

关联阅读