Ubuntu Docker安装与优化指南
·
一、卸载旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt remove $pkg -y 2>/dev/null
done
二、安装 Docker
# 安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
# 创建 GPG 密钥目录
sudo mkdir -p /etc/apt/keyrings
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加 Docker 仓库
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
# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
三、验证安装
# 查看版本
docker --version
# 输出示例:Docker version 29.4.1, build 055a478
docker compose version
# 输出示例:Docker Compose version v5.1.3
# 运行测试容器
sudo docker run hello-world
# 输出 "Hello from Docker!" 表示安装成功
四、配置国内镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://1ms.run",
"https://1panel.love"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"live-restore": true,
"data-root": "/var/lib/docker"
}
EOF
sudo systemctl restart docker
配置说明:
| 配置项 | 说明 |
|---|---|
| registry-mirrors | 6 个国内镜像源,加速拉取 |
| log-driver | 日志驱动:json-file |
| max-size | 单日志文件最大 10MB |
| max-file | 最多保留 3 个日志文件 |
| live-restore | Docker 重启时容器保持运行 |
| data-root | 数据目录(可指向 LVM 分区) |
五、配置用户权限
# 允许普通用户无需 sudo 运行 Docker
sudo usermod -aG docker $USER
# 刷新用户组(或重新登录)
newgrp docker
# 验证(无需 sudo)
docker ps
六、解决代理冲突
如果系统配置了代理,可能导致 Docker 拉取失败:
# 检查是否配置了代理
env | grep -i proxy
# 方法 1:临时取消代理
unset http_proxy
unset https_proxy
# 方法 2:使用 --noproxy
curl --noproxy "*" https://download.docker.com/linux/ubuntu/gpg
# 方法 3:永久移除代理配置
sudo nano /etc/environment
# 删除或注释 http_proxy / https_proxy 行
# 方法 4:Docker 服务代理(如需通过代理拉取镜像)
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8889"
Environment="HTTPS_PROXY=http://127.0.0.1:8889"
Environment="NO_PROXY=localhost,127.0.0.1,172.18.0.0/16"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
七、配置 Docker 数据目录(可选)
如果使用了 LVM,将 Docker 数据目录指向独立分区:
# 停止 Docker
sudo systemctl stop docker
# 迁移数据(如有)
sudo rsync -avxHAX /var/lib/docker/ /mnt/new-docker/
# 卸载临时挂载
sudo umount /mnt/new-docker
# 备份原目录
sudo mv /var/lib/docker /var/lib/docker.old
sudo mkdir /var/lib/docker
# 编辑 fstab,添加(替换 UUID)
# UUID=xxxx-xxxx /var/lib/docker ext4 defaults 0 2
# 挂载
sudo mount -a
# 重启 Docker
sudo systemctl start docker
# 验证
docker info | grep "Docker Root Dir"
# 输出:Docker Root Dir: /var/lib/docker
# 确认正常后清理旧数据
sudo rm -rf /var/lib/docker.old
八、常用命令
# 查看 Docker 信息
docker info
# 查看存储驱动
docker info | grep "Storage Driver"
# 输出:Storage Driver: overlay2
# 查看日志配置
docker info | grep -A3 "Logging"
# 查看运行的容器
docker ps
# 查看所有容器(含停止的)
docker ps -a
# 查看镜像
docker images
# 清理未使用的资源
docker system prune -a
九、验证清单
| 项目 | 命令 | 预期结果 |
|---|---|---|
| 版本 | docker --version | Docker version 29.x.x |
| Compose | docker compose version | Docker Compose version v5.x.x |
| 服务状态 | systemctl is-active docker | active |
| 存储驱动 | docker info | grep Storage | overlay2 |
| 日志配置 | docker info | grep -A3 Logging | json-file, 10m/3 files |
| 镜像拉取 | docker run hello-world | Hello from Docker! |
| 用户权限 | docker ps(无需 sudo) | 正常输出 |
十、故障排查
问题 1:拉取镜像超时
# 检查网络
ping -c 3 registry-1.docker.io
# 检查镜像源
docker info | grep -A10 "Registry Mirrors"
# 测试拉取
docker pull hello-world
问题 2:权限拒绝
# 检查用户组
groups $USER
# 应包含 docker
# 刷新用户组
newgrp docker
问题 3:代理冲突
# 查看代理配置
env | grep -i proxy
# 取消代理
unset http_proxy
unset https_proxy
更多推荐


所有评论(0)