0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

docker配置网络代理

马哥Linux运维 来源:博客园蒲公英PGY 2025-03-03 17:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有时因为网络原因,比如公司 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://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

复制

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

Container 代理

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


{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.example.com:8080",
"httpsProxy": "http://proxy.example.com: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://proxy.example.com:8080/"
--build-arg "HTTPS_PROXY=http://proxy.example.com: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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217928
  • 网络
    +关注

    关注

    14

    文章

    8130

    浏览量

    93075
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14012

原文标题:docker 配置网络代理

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于Linux内核的透明代理配置方案

    本内容提供了基于Linux内核的透明代理配置方案,先解释为什么要配置透明代理,如何利用Linux内核来实现
    发表于 11-03 16:47 1083次阅读

    Docker网络选型和日志监控选型

    Docker容器化网络和日志的选型和落地
    发表于 05-06 07:58

    docker的四种网络模式

    docker网络模式
    发表于 10-16 08:11

    网络爬虫nodejs爬虫代理配置

    。就算验证码通过了,也不会采集到数据,这也就是所谓的反爬虫策略。所以这种情况下,越来越多的网络爬虫会利用代理IP去进行采集。目标网站限制了一个IP,可以换一个代理IP继续进行业务采集。当然每个人的爬虫程序
    发表于 09-01 17:23

    详解docker的四种网络模式

    使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Dock
    的头像 发表于 01-21 09:21 7134次阅读

    国内Docker CE 镜像源的配置

    的新名称,Docker CE 包含了完整的 Docker 平台,非常适合开发人员和运维团队构建容器 APP。   配置方法 Ubuntu 14.04/16.04(使用 apt-get 进行安装
    的头像 发表于 11-09 09:16 4813次阅读

    docker-sshd Docker容器的sshd代理

    ./oschina_soft/docker-sshd.zip
    发表于 05-12 11:13 0次下载
    <b class='flag-5'>docker</b>-sshd <b class='flag-5'>Docker</b>容器的sshd<b class='flag-5'>代理</b>

    weblogic-docker Docker配置项目

    ./oschina_soft/weblogic-docker.zip
    发表于 05-13 10:30 0次下载
    weblogic-<b class='flag-5'>docker</b> <b class='flag-5'>Docker</b>的<b class='flag-5'>配置</b>项目

    Docker镜像的详细讲解

    本文是对 Docker 镜像的详细讲解,讲解了如何安装 Docker配置 Docker 镜像加速以及操作 Docker 镜像。希望对大家有
    的头像 发表于 08-02 10:00 2890次阅读

    docker的4种网络模式

    Docker 使用 Linux 桥接,在宿主机虚拟一个 Docker 容器网桥(docker0),Docker 启动一个容器时会根据 Docker
    的头像 发表于 08-14 11:50 2486次阅读

    docker的4种网络模式配置

    Docker 使用 Linux 桥接,在宿主机虚拟一个 Docker 容器网桥(docker0),Docker 启动一个容器时会根据 Docker
    的头像 发表于 10-10 10:37 2126次阅读

    Docker容器的四种网络模式

    Docker 在安装后自动提供 3 种网络,可以使用 docker network ls 命令查看。
    的头像 发表于 10-17 14:53 2351次阅读

    Docker容器网络的数据链路是什么

    单主机容器网络可能存在多个docker,分属于不同的bridge,它们之间有通信的需求。
    的头像 发表于 02-15 09:56 1599次阅读
    <b class='flag-5'>Docker</b>容器<b class='flag-5'>网络</b>的数据链路是什么

    鸿蒙OpenHarmony:【配置代理

    新建代理配置文件。
    的头像 发表于 04-29 22:17 1475次阅读
    鸿蒙OpenHarmony:【<b class='flag-5'>配置</b><b class='flag-5'>代理</b>】

    如何安全配置并使用境外SOCKS5代理进行网络访问

    配置和使用境外SOCKS5代理进行网络访问时,必须严格遵守法律法规,并确保个人信息安全。
    的头像 发表于 09-25 08:06 1149次阅读