Appearance
Docker运行环境配置指南
目标: 在 Ubuntu Server (20.04/22.04/24.04) 上部署标准化的 Docker 运行环境,支持 Docker Compose V2,并针对国内网络环境进行优化。
1. 安装 Docker Engine (国内环境)
针对国内网络环境,我们提供两种安装方案。如果你是 Ubuntu 20.04 用户,请特别注意方案 A 中的修复步骤。
方案 A: 官方脚本 + 阿里云镜像 (快速)
这是最简单的方法,脚本会自动识别系统并配置源。
运行安装脚本:
bashcurl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun🚑 故障修复 (Ubuntu 20.04/Focal): 如果脚本报错
E: Unable to locate package docker-model-plugin,说明软件源已配置成功,但镜像源中缺少该插件。无需重跑脚本,直接执行以下命令手动安装核心组件(已剔除问题插件):bashsudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin
方案 B: 手动配置软件源 (高稳定性)
如果脚本执行失败,或者你希望对系统有完全的控制,请使用此方案。
安装必要工具:
bashsudo apt-get update sudo apt-get install -y ca-certificates curl gnupg添加阿里云 GPG 密钥:
bashsudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg写入软件源列表:
bashecho \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null安装 Docker:
bashsudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin
1.3 非 Root 用户运行配置
配置当前用户直接运行 Docker 命令,避免每次输入 sudo。
bash
sudo usermod -aG docker $USER
# 注销重登或执行:
newgrp docker1.4 验证安装
bash
docker version
docker compose version2. Docker Daemon 配置 (核心优化)
配置镜像加速 (Registry Mirrors) 和日志轮转 (Log Rotation)。
注意: 公共镜像源可能不稳定。推荐使用阿里云/腾讯云的个人专属加速器地址。
编辑 /etc/docker/daemon.json:
bash
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json写入以下内容 (包含多个备用源):
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}应用配置:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker3. 目录结构规范 (Directory Standard)
采用 Linux 标准的 /srv 目录存放服务数据,便于统一备份。
3.1 目录规划
text
/srv/
├── core/ # 基础设施 (Portainer, Nginx-Proxy, Watchtower)
├── hub/ # 家庭服务 (Nextcloud, Jellyfin)
├── app/ # 自研应用 (Neat, Demo)
├── site/ # 静态站点 (Home, Blog)
├── data/ # 持久化数据挂载点 (数据库, 大文件)
└── backup/ # 本地备份目录3.2 初始化命令
bash
# 创建目录结构
sudo mkdir -p /srv/{core,hub,app,site,data,backup}
# 将目录所有权赋予当前用户 (方便管理)
sudo chown -R $USER:$USER /srv4. 可视化管理工具 (Portainer CE)
4.1 部署
bash
mkdir -p /srv/core/portainer
cd /srv/core/portainer
# 创建 docker-compose.yml
cat > docker-compose.yml <<EOF
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer_data:/data
ports:
- "9000:9000"
EOF
# 启动
docker compose up -d
# 重启
docker compose restart
# 查看最新200行日志
docker compose logs -f --tail 200
# 查看容器状态
docker compose ps
# 停止
docker compose down4.2 访问
浏览器访问 http://<IP>:9000 http://192.168.1.200:9000 初始化管理员密码。
5. 常见问题 (Troubleshooting)
5.1 EOL 警告与 docker-model-plugin 缺失
- 现象: 脚本提示
ubuntu focal reached end-of-life且报错Unable to locate package docker-model-plugin。 - 原因: Ubuntu 20.04 (Focal) 已过标准支持期,部分新插件(如 model-plugin)在镜像源中未提供或不支持该版本。
- 解决: 参考本文 1.1 方案 A 中的修复命令,手动安装不含该插件的核心包即可。
5.2 镜像拉取失败
如果配置了加速器仍然无法拉取镜像 (timeout 或 connection refused),请尝试配置 HTTP 代理:
创建目录:
sudo mkdir -p /etc/systemd/system/docker.service.d创建文件
http-proxy.conf:ini[Service] Environment="HTTP_PROXY=http://proxy-ip:port" Environment="HTTPS_PROXY=http://proxy-ip:port"重启:
sudo systemctl daemon-reload && sudo systemctl restart docker
