Docker 常用配置(代理与镜像加速)
1. 适用场景
- 在内网或受限网络环境中拉取镜像
- 容器内需要访问外网(如安装依赖、下载包)
- 提升镜像拉取速度
2. 前置条件
- 已安装 Docker
- 具备 root 或 sudo 权限
- 明确代理地址(如
http://192.168.1.2:7890)
3. 配置容器运行时代理(容器内网络代理)
编辑用户级 Docker 配置:
vi ~/.docker/config.json
示例:
{
"proxies": {
"default": {
"httpProxy": "http://192.168.1.2:7890",
"httpsProxy": "http://192.168.1.2:7890",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}
说明:该配置主要影响 Docker 客户端启动的容器环境变量。
4. 配置 Docker Daemon 代理(镜像下载代理)
创建 systemd drop-in 目录:
mkdir -p /etc/systemd/system/docker.service.d
创建代理配置文件:
vi /etc/systemd/system/docker.service.d/http-proxy.conf
写入以下内容:
[Service]
Environment="HTTP_PROXY=http://192.168.1.2:7890/"
Environment="HTTPS_PROXY=http://192.168.1.2:7890/"
重载并重启:
systemctl daemon-reload
systemctl restart docker
5. 配置镜像加速器
编辑 daemon 配置:
vi /etc/docker/daemon.json
示例:
{
"registry-mirrors": ["https://og45rd7t.mirror.aliyuncs.com"]
}
重启生效:
systemctl restart docker
6. 验证配置
# 查看 Docker 服务环境变量(确认代理是否生效)
systemctl show --property=Environment docker
# 查看 daemon 当前配置
cat /etc/docker/daemon.json
# 试拉取镜像
docker pull nginx:latest
7. 回滚方案
# 删除 daemon 代理配置
rm -f /etc/systemd/system/docker.service.d/http-proxy.conf
# 删除镜像加速器配置(按需)
rm -f /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
8. 常见问题
Q1:配置了代理仍然无法拉镜像?
- 检查代理地址是否可达
- 检查是否存在公司防火墙拦截
- 检查
noProxy配置是否误伤目标地址
Q2:docker pull 生效但容器内访问外网仍失败?
- 说明仅配置了 daemon 代理,未配置容器运行时代理
- 补充
~/.docker/config.json或在docker run时显式传入-e HTTP_PROXY=...