Skip to content

Docker 安装(Ubuntu)

本章将详细介绍如何在 Ubuntu 系统上安装和配置 Docker Engine。

系统要求

Docker Engine 支持以下 Ubuntu 版本(64 位):

  • Ubuntu 24.04 (Noble)
  • Ubuntu 22.04 (Jammy)
  • Ubuntu 20.04 (Focal)

硬件要求:

  • 64 位处理器
  • 内核版本 3.10 或更高
  • 至少 2GB RAM(推荐 4GB 以上)

卸载旧版本

如果之前安装过旧版本的 Docker,需要先卸载:

bash
sudo apt-get remove docker docker-engine docker.io containerd runc

安装方法一:使用 APT 仓库安装(推荐)

1. 更新包索引并安装依赖

bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

2. 添加 Docker 官方 GPG 密钥

bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 添加 Docker APT 仓库

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

4. 安装 Docker Engine

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

5. 验证安装

bash
sudo docker run hello-world

安装方法二:使用便捷脚本

Docker 提供了一键安装脚本,适合快速安装:

bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

⚠️ 便捷脚本不建议在生产环境使用,因为它会自动安装最新版本且无法自定义配置。

安装后配置

配置非 root 用户运行 Docker

默认情况下,Docker 命令需要 sudo 权限。将用户添加到 docker 组可以免去 sudo

bash
# 创建 docker 组(通常安装时已自动创建)
sudo groupadd docker

# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER

# 使组变更生效(或重新登录)
newgrp docker

# 验证无需 sudo 即可运行
docker run hello-world

配置 Docker 开机自启

bash
# 设置开机自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

# 如需禁用开机自启
sudo systemctl disable docker.service
sudo systemctl disable containerd.service

配置 Docker Daemon

创建或编辑 /etc/docker/daemon.json

bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

# 重启 Docker 使配置生效
sudo systemctl restart docker

常见问题

权限问题

bash
# 如果遇到 "permission denied" 错误
sudo chmod 666 /var/run/docker.sock

# 或者确认用户已在 docker 组中
groups $USER

服务启动失败

bash
# 检查 Docker 服务状态
sudo systemctl status docker

# 查看详细日志
sudo journalctl -xu docker.service

DNS 解析问题

如果容器内无法解析域名,编辑 /etc/docker/daemon.json

json
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}

卸载 Docker

bash
# 卸载 Docker Engine
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 删除所有镜像、容器和数据卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

验证安装成功

bash
# 检查版本
docker --version
docker compose version

# 查看系统信息
docker info

# 运行测试容器
docker run hello-world

如果所有命令正常执行,说明 Docker 在 Ubuntu 上安装成功。

延伸阅读