docker change to proxy
在 Docker 中使用代理,通常分为三种场景:配置拉取镜像(Docker Daemon)、配置正在运行的容器(Container),以及配置构建镜像的过程(Docker Build)。 你可以根据你的具体需求选择以下对应的配置方法:
1. 配置 Docker Daemon(最常用:解决 docker pull 慢或超时)
如果你是在线拉取镜像(如 docker pull)时需要走代理,需要配置 Docker 宿主机上的守护进程。
- 创建或编辑配置文件(如果没有该目录请先手动创建):
- Linux / Mac: /etc/systemd/system/docker.service.d/http-proxy.conf
- Windows: 在 Docker Desktop 设置中的 Resources -> Proxies 界面直接填写。
- 在配置文件中添加以下内容(以 Linux 为例):
[Service] Environment="HTTP_PROXY=http://127.0.0.1:port" Environment="HTTPS_PROXY=http://127.0.0.1:port" Environment="NO_PROXY=localhost,127.0.0.1,://somecorporation.com"
(注:如果使用 SOCKS5 代理,请将 http:// 改为 socks5://) 3. 重启 Docker 服务使配置生效:
sudo systemctl daemon-reload sudo systemctl restart docker
2. 配置正在运行的容器(让容器内部上网)
如果你希望容器启动后,容器内部的程序(如 curl、apt-get)能够通过代理访问外网,可以配置全局客户端文件。
- 全局配置(推荐):修改当前用户的 Docker 配置文件 ~/.docker/config.json,添加 proxies 字段:
{ "proxies": { "default": { "httpProxy": "http://127.0.0.1:port", "httpsProxy": "http://127.0.0.1:port", "noProxy": "localhost,127.0.0.1" } } }
- 单次运行配置:在 docker run 时通过环境变量临时注入:
docker run -e HTTP_PROXY="http://127.0.0.1:port" -e HTTPS_PROXY="http://127.0.0.1:port" ubuntu
3. 配置 Docker Build(在 docker build 编译时上网)
如果你在通过 Dockerfile 构建镜像时,里面的 RUN apt-get update 或 pip install 需要走代理,可以使用 --build-arg 参数。 在构建时执行以下命令(这种方式最推荐,因为代理信息不会被硬编码进镜像中,避免安全泄露):
docker build
--build-arg HTTP_PROXY=http://127.0.0.1:port
--build-arg HTTPS_PROXY=http://127.0.0.1:port
-t my-image:latest .
如果遇到问题,你可以告诉我:
- 你现在是 docker pull 镜像太慢,还是容器内部的代码需要挂代理?
- 你的宿主机操作系统是 Linux、Mac 还是 Windows?