docker
Docker
设置 Docker 的 apt 存储库
官方
阿里云公网镜像
阿里云 ECS VPC 镜像
安装 Docker 包
配置 Docker Engine 的拉取代理
如果 docker pull 需要走代理,优先配置 Docker Engine(dockerd)本身的代理。对于使用 systemd 的 Linux,一般有两种方式。下面这些宿主机级别的命令默认在 root shell 下执行。
方式一:daemon.json
Docker Engine 23.0+ 可以直接在 /etc/docker/daemon.json 中配置代理:
保存后重启 Docker:
方式二:systemd 服务环境变量
如果更习惯按服务配置,也可以给 docker.service 添加代理环境变量:
查看是否生效:
Rootless Docker
如果是 rootless Docker,systemd 配置目录改为当前用户目录,并且使用当前用户执行:
说明:
daemon.json中的代理配置优先级高于环境变量配置。NO_PROXY建议加入内网域名、私有镜像仓库地址、localhost和127.0.0.1。- 如果代理地址里包含
#?!()[]{}等特殊字符,写入systemd环境变量时需要按 Docker 官方说明做转义。 - 上述配置适用于 Docker Engine;Docker Desktop 不使用这里的
daemon.json代理设置。
配置容器和构建的代理
仅配置 dockerd 只能解决 docker pull、docker push 之类由守护进程发起的请求。若容器内访问外网或 docker build 拉依赖也要走代理,还需要额外配置客户端侧代理。
临时为容器设置代理
临时为构建设置代理
说明:
- 构建阶段优先使用
--build-arg,不要把代理直接写进 Dockerfile 的ENV。 - 代理信息可能包含敏感内容,不建议把带认证信息的代理地址提交到仓库。