- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云小课堂。在现代软件开发和部署过程中,Docker因其轻量级和便捷性而广受欢迎。然而,在某些网络环境下,直接访问外部网络资源可能会受到限制,这时就需要配置网络代理来确保Docker的正常运行。本文将详细介绍如何在不同场景下为Docker配置网络代理,包括守护进程dockerd、容器运行和构建时的代理配置方法,并强调不同场景下的适用性。
代理信息示例
假设我们使用的代理服务器地址为:10.0.0.1:8080,我们将以此地址为例进行配置。
Dockerd 代理配置
当执行docker pull命令时,实际上是由守护进程dockerd来执行的。因此,我们需要在dockerd的环境中配置代理,而这个环境受systemd管控。以下是具体的配置步骤:
1. 创建配置目录并添加代理配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
2. 在proxy.conf文件中添加以下内容:
[Service]
Environment="HTTP_PROXY=http://www.landui.com:8080"
Environment="HTTPS_PROXY=http://www.landui.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.mycompany.com"
3. 重载systemd配置并重启dockerd服务以使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
Container 代理配置
在容器运行阶段,如果需要通过代理上网,我们可以配置~/.docker/config.json文件。以下配置在Docker 17.07及以上版本生效。
1. 编辑~/.docker/config.json文件,添加或修改proxies部分:
{
"proxies": {
"default": {
"httpProxy": "http://www.landui.com:8080",
"httpsProxy": "http://www.landui.com:8080",
"noProxy": "localhost,127.0.0.1,.mycompany.com"
}
}
}
2. 这种方法适用于个人开发环境,因为它会在所有配置修改后启动的容器中生效。对于CI/CD的自动构建环境或上线运行环境,建议使用显式配置,如在容器运行时通过-e注入环境变量,以减少对构建、部署环境的依赖。
Docker Build 代理配置
虽然docker build本质上也是启动一个容器,但其环境略有不同,用户级配置在此不适用。在构建时,需要注入http_proxy等参数。
1. 使用以下命令进行构建,并注入代理参数:
docker build . \\
--build-arg "HTTP_PROXY=http://www.landui.com:8080" \\
--build-arg "HTTPS_PROXY=http://www.landui.com:8080" \\
--build-arg "NO_PROXY=localhost,127.0.0.1,.mycompany.com" \\
-t your/image:tag
注意事项
- 无论是docker run还是docker build,默认情况下网络是隔绝的。如果代理使用的是localhost:3128这类地址,则会无效。这类仅限本地的代理必须加上--network host才能正常使用,而一般则需要配置代理的外部IP,且代理本身要开启Gateway模式。
- docker build代理是在执行前设置的,所以修改后,下次执行立即生效。
通过上述步骤,我们可以为Docker配置网络代理,确保在受限网络环境下也能顺利进行容器的拉取、运行和构建。
蓝队云官网上拥有完善的技术支持库,你可以在这里找到更多的帮助和资源。如果你有任何技术问题,也欢迎直接咨询我们。同时,蓝队云还整理了运维必备的工具包,免费分享给大家使用,需要的朋友可以直接咨询。
更多技术知识,蓝队云期待与你一起探索。让我们一起在技术的海洋中航行,发现更多的秘密和宝藏。
售前咨询
售后咨询
备案咨询
二维码
TOP