当前位置:首页 > CN2资讯 > 正文内容

Docker的三种网络代理配置:dockerd pull镜像代理;容器docker run网络代理;docker build代理--build-argdocker pull 代理

8小时前CN2资讯


有时因为网络原因,比如公司NAT,或其它啥的,需要使用代理。 Docker的代理配置,略显复杂,因为有三种场景。 但基本原理都是一致的,都是利用Linux的​​http_proxy​​等环境变量。

dockerd代理

在执行​​docker pull​​​时,是由守护进程​​dockerd​​​来执行。 因此,代理需要配在​​dockerd​​​的环境中。 而这个环境,则是受​​systemd​​​所管控,因此实际是​​systemd​​的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在这个​​proxy.conf​​​文件(可以是任意​​*.conf​​的形式)中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://:8080/"
Environment="HTTPS_PROXY=http://:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,​​:8080​​​要换成可用的免密代理。 通常使用​​cntlm​​​在本机自建免密代理,去对接公司的代理。 可参考《​​Linux下安装配置Cntlm代理​​》。

Container代理

在容器运行阶段,如果需要代理上网,则需要配置​​~/.docker/config.json​​。 以下配置,只在Docker 17.07及以上版本生效。

{
"proxies":
{
"default":
{
"httpProxy": "http://:8080",
"httpsProxy": "http://:8080",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}

这个是用户级的配置,除了​​proxies​​​,​​docker login​​等相关信息也会在其中。 而且还可以配置信息展示的格式、插件参数等。

此外,容器的网络代理,也可以直接在其运行时通过​​-e​​​注入​​http_proxy​​​等环境变量。 这两种方法分别适合不同场景。 ​​config.json​​​非常方便,默认在所有配置修改后启动的容器生效,适合个人开发环境。 在CI/CD的自动构建环境、或者实际上线运行的环境中,这种方法就不太合适,用​​-e​​注入这种显式配置会更好,减轻对构建、部署环境的依赖。 当然,在这些环境中,最好用良好的设计避免配置代理上网。

​​docker build​​代理

虽然​​docker build​​​的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。 在构建时,需要注入​​http_proxy​​等参数。

docker build . \
--build-arg "HTTP_PROXY=http://:8080/" \
--build-arg "HTTPS_PROXY=http://:8080/" \
--build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
-t your/image:tag

注意:无论是​​docker run​​​还是​​docker build​​​,默认是网络隔绝的。 如果代理使用的是​​localhost:3128​​​这类,则会无效。 这类仅限本地的代理,必须加上​​--network host​​才能正常使用。 而一般则需要配置代理的外部IP,而且代理本身要开启gateway模式。

重启生效

代理配置完成后,​​reboot​​重启当然可以生效,但不重启也行。

​​docker build​​代理是在执行前设置的,所以修改后,下次执行立即生效。 Container代理的修改也是立即生效的,但是只针对以后启动的Container,对已经启动的Container无效。

​​dockerd​​​代理的修改比较特殊,它实际上是改​​systemd​​​的配置,因此需要重载​​systemd​​​并重启​​dockerd​​才能生效。

sudo systemctl daemon-reload
sudo systemctl restart docker

参考

  • ​​https://note.qidong.name/2020/05/docker-proxy​​
  • ​​Control Docker with systemd | Docker Documentation​​
  • ​​Configure Docker to use a proxy server | Docker Documentation​​
  • ​​Use the Docker command line | Docker Documentation​​


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24785.html

    分享给朋友:

    “Docker的三种网络代理配置:dockerd pull镜像代理;容器docker run网络代理;docker build代理--build-argdocker pull 代理” 的相关文章

    Hetzner VPS:高性能、低延迟的全球服务器解决方案

    公司背景与数据中心位置 Hetzner作为欧洲最大的数据中心运营商之一,一直以提供高性能的VPS和独立服务器而闻名。公司在德国、芬兰和美国设有数据中心,确保用户能够享受到低延迟和高带宽的服务。这些数据中心的地理位置选择非常讲究,不仅覆盖了欧洲的主要市场,还通过美国的数据中心服务全球用户。无论你是欧洲...

    深入探讨144GB显存显卡在深度学习中的应用与优势

    在谈到现代显卡时,144GB显存无疑成为了一个引人注目的热门话题。显存是显卡中极为关键的一部分,决定着我们在高性能计算、图形处理和深度学习等领域的使用体验。显存的容量直接影响到显卡在执行复杂任务时的能力,而144GB的显存容量,帮助我们突破了许多传统显存限制。 首先,显存的基本概念就像是计算机的临时...

    深入了解服务器的基本概念、分类、性能评估与优化策略

    1. 服务器的基本概念与功能 在现代计算环境中,服务器的角色不可或缺。我将服务器看作是一种高性能计算机,专门为客户机提供服务。它们是构建云计算和数据中心的核心设备。通过提供各种服务,如文件存储、数据处理和应用托管,服务器帮助企业高效运营,满足日益增长的技术需求。 服务器的特点非常明显,具有高性能、高...

    NameSilo Coupons - 如何以低成本注册域名并享受优质服务

    NameSilo自2010年成立以来,展现出稳定且迅猛的发展态势,成为了一家备受关注的域名注册商。总部位于美国亚利桑那州,NameSilo已经成功管理超过400万个活跃域名,且在行业内占据着显著的地位。在这条领域内,NameSilo被视为全球仅有的12家顶级域名注册商之一,这无疑为其信誉奠定了坚实基...

    dataonline3:高效的数据管理与分析工具

    1. dataonline3概述 在当今这个数据驱动的时代,dataonline3作为一个先进的数据管理工具,受到了广泛关注。它整合了丰富的数据处理功能,使用户能够轻松地收集、分析和展示数据。用户无论是在科研、企业还是个人项目中,dataonline3都提供了便利和强大的支持。 dataonline...

    Fiberstate: 让你的健康饮食更简单轻松

    每当提起“Fiberstate”这个词,我的脑海中便浮现出一个全新的健康理念。Fiberstate并不仅仅是一个产品,它代表着对身体健康全面理解的汇聚,是我提升生活质量的伴侣。从简单的定义开始探讨,这个概念到底蕴含着什么深意。 Fiberstate的定义实际上很贴近我们的日常生活。简单来说,它是指通...