社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker的三种网络代理配置

马哥Linux运维 • 4 年前 • 598 次点击  

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

dockerd代理

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

sudo mkdir -p /etc/systemd/system/docker.service.d
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"
   }
 }
}

这个是用户级的配置,除了proxiesdocker 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模式。

原文:https://note.qidong.name/2020/05/docker-proxy/

作者:匿蟒




- 白嫖公开课《Python的魔法与禁术》-

8月25日(周二)晚21:00,我们特别邀请了Comyn(李学明)老师给大家直播讲解一些关于python的干货知识!

主题:《python的魔法与禁术》

分享内容:

  • 不算魔法的魔法:装饰器

  • 初级魔法:运算符重载

  • 终极魔法:容器运算符

  • 高级魔法:反射

  • 禁术:描述器和元编程

本次分享形式为直播分享,特别适合想要提升自己的小伙伴们,如果你也想更深入了解python,欢迎来直播间互动交流!

Comyn:原大众点评运维平台架构师,腾讯广告部核心运维专家,饿了么Python运维开发高级总监。拥有多年一线运维经验,参与过架构改造、平台迁移、自动化建设等运维核心项目,对开源系统都有深入理解


往期推荐


2020微服务•SRE工程师技能重磅推出(文末领免费福利)

2020-07-24

10大黑客专用的 Linux 操作系统

2020-08-14

马哥教育Linux面授42期正式开课!

2020-07-24

【纯干货】阿里云技术大牛如何攻克OSS ?

2020-08-04

Linux运维不会这些,别做工程师......

2020-08-10



点赞鼓励一下


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/72815
 
598 次点击