Docker proxy setting
编辑
2024-09-04
Docker
00

目录

1. 为 docker pull 配置proxy
2. 为 docker run 配置proxy
方法一:直接在容器内部设置代理(推荐)
方法二:使用宿主机网络(--network=host)
方法四:配置全局代理
3. 为 docker build 配置代理
使用宿主机网络模式
使用虚拟网卡的网络模式

1. 为 docker pull 配置proxy

当你需要通过 docker pull 命令从 Docker Hub 拉取镜像时,Docker 代理的设置由 systemd 接管。因此,需要通过以下步骤来配置代理:

  1. 编辑 Docker 服务的代理配置

    bash
    展开代码
    sudo mkdir -p /etc/systemd/system/docker.service.d/ sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
  2. 添加 HTTP 和 HTTPS 代理设置

    ini
    展开代码
    [Service] Environment="HTTP_PROXY=http://127.0.0.1:10811" Environment="HTTPS_PROXY=http://127.0.0.1:10811"

    这里的 127.0.0.1:10811 是你本机的 HTTP 代理地址。

  3. 重新加载并重启 Docker 服务

    bash
    展开代码
    sudo systemctl daemon-reload sudo systemctl restart docker
  4. 验证代理设置: 你可以通过以下命令查看 Docker 服务的环境变量,确保代理已生效:

    bash
    展开代码
    sudo systemctl show --property=Environment docker

配置完成后,docker pull 命令将通过配置的代理来拉取镜像。

2. 为 docker run 配置proxy

当你使用 docker run 启动容器时,你可以通过以下几种方法来让容器使用代理:

方法一:直接在容器内部设置代理(推荐)

如果你希望容器内部直接使用代理,可以在启动容器后,通过以下命令设置代理:

bash
展开代码
export ALL_PROXY='socks5://127.0.0.1:10810'

这里的 127.0.0.1:10810 是你本机的 SOCKS5 代理地址。

方法二:使用宿主机网络(--network=host

在启动容器时,可以使用 --network=host 选项共享宿主机的网络,然后在容器内设置代理:

bash
展开代码
docker run --network=host my-container

在容器内部设置代理:

bash
展开代码
export ALL_PROXY='socks5://127.0.0.1:10810'

使用 --network=host 时,容器将共享宿主机的网络,这样你可以直接使用 127.0.0.1 作为代理地址。

需要注意的是,使用 --network=host 时,所有端口都将与宿主机共享,端口映射 (-p) 参数将无法使用。

方法四:配置全局代理

你可以通过编辑 Docker 客户端配置文件 ~/.docker/config.json,为所有容器配置全局代理:

json
展开代码
{ "proxies": { "default": { "httpProxy": "http://127.0.0.1:10811", "httpsProxy": "http://127.0.0.1:10811", "noProxy": "localhost,127.0.0.1" } } }

设置全局代理后,所有通过 docker run 创建的容器都会自动使用这些代理设置。

3. 为 docker build 配置代理

在构建 Docker 镜像时,你可以使用宿主机的网络模式,并通过 --build-arg 参数为构建过程指定代理:

使用宿主机网络模式

你可以通过 --network=host 选项让 docker build 使用宿主机网络,从而直接访问宿主机的代理:

bash
展开代码
docker build --network=host --build-arg http_proxy=http://127.0.0.1:10811 --build-arg https_proxy=http://127.0.0.1:10811 -t my-image .

使用虚拟网卡的网络模式

如果你选择使用 Docker 默认的 bridge 网络模式,构建过程中将使用 Docker 的虚拟网卡,这时需要使用虚拟网卡的 IP 地址:

bash
展开代码
docker build --build-arg http_proxy=http://172.17.0.1:10811 --build-arg https_proxy=http://172.17.0.1:10811 -t my-image .

bridge 网络模式下,172.17.0.1 是 Docker 默认的虚拟网卡地址,容器内部将通过该地址访问宿主机的代理。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!