您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

一文详解Docker 代理脱坑

时间:2020-02-14 16:02:19  来源:  作者:

Docker 代理配置

由于公司 Lab 服务器无法正常访问公网,想要下载一些外部依赖包需要配置公司的内部代理。Docker 也是同理,想要访问公网需要配置一定的代理。

Docker 代理分为两种,一种是为运行的 Container 配置代理,用于下载一些依赖包以及访问公网。另一种是为 Docker Daemon 配置代理,用于支持 docker 相关的命令。

一文详解Docker 代理脱坑

 

一、为容器配置代理

配置容器代理一般分为两种,一种是全局配置,另一种是仅为某个容器配置。

1. 全局配置

首先说明,此修改方法仅支持 17.07 或者更高版本。

修改或创建 ~/.docker/config.json

# 如果有的话,先备份一下cp ~/.docker/config.json ~/.docker/config.json.bk# 修改内容如下cat ~/.docker/config.json{        "auths": {},        "HttpHeaders": {                "User-Agent": "Docker-Client/19.03.2 (linux)"        },        "proxies":        {            "default":            {                "httpProxy": "http://173.39.112.117:80",                "httpsProxy": "http://173.39.112.117:80"            }        }}

为了确保生效,重启下 docker :systemctl restart docker

此时宿主机并没配置代理,查询下 IP:

[root@localhost ~]# curl cip.ccIP      : 64.104.xxx.xx地址    : 中国  香港  cisco.com数据二  : 香港 | 特别行政区数据三  : 中国香港URL     : http://www.cip.cc/64.104.xxx.xx

基于之前使用 Docker file 打包镜像的文章,直接使用打包好带有 systemd 功能的镜像。

# 创建 container[root@localhost home] docker run --privileged=true -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 -d local/c7-systemd# 进入 container[root@localhost home] docker exec -it 3eaa1cc71706 /bin/bash# 查询 IP[root@3eaa1cc71706 /]# curl cip.ccIP      : 173.39.112.xxx地址    : 新加坡  新加坡数据二  : 新加坡数据三  : 新加坡URL     : http://www.cip.cc/173.39.112.xxx

可以看到容器内已经成功配置了代理,可以正常下载依赖了。

2. 局部修改

方法1-在 docker run 命令添加参数

# 创建 containerdocker run --privileged=true -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --env HTTP_PROXY="http://173.39.112.117:80 --env HTTPS_PROXY="http://173.39.112.117:80 --env http_proxy="http://173.39.112.117:80 --env https_proxy="http://173.39.112.117:80 -p 80:80 -d local/c7-systemd# 进入 container[root@localhost home]# docker exec -it 3607976e8f2d /bin/bash# 查询 IP[root@3607976e8f2d /]# curl cip.ccIP      : 173.39.112.xxx地址    : 新加坡  新加坡数据二  : 新加坡数据三  : 新加坡URL     : http://www.cip.cc/173.39.112.xxx

方法2-在 Docker-file 添加

这里以打包一个 httpd 的 docker file 为例子:

FROM local/c7-systemdENV MY_PROXY_URL="http://173.39.112.117:80"ENV HTTP_PROXY=$MY_PROXY_URL     HTTPS_PROXY=$MY_PROXY_URL     FTP_PROXY=$MY_PROXY_URL     http_proxy=$MY_PROXY_URL     https_proxy=$MY_PROXY_URL     ftp_proxy=$MY_PROXY_URLRUN yum -y install httpd; yum clean all; systemctl enable httpd.serviceEXPOSE 80CMD ["/usr/sbin/init"]

结果是相同的,这里就不演示了。有时添加代理是域名的话,就需要额外的操作。

 

3. 添加代理是域名的处理

如果添加的代理是域名的话,如 proxy.esl.cisco.com:80, 需要再做一步额外的处理。

方法1-通过 docker run 参数添加

# 创建 container[root@localhost home]#docker run --privileged=true -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --env HTTP_PROXY="http://proxy.esl.cisco.com:80 --env HTTPS_PROXY="http://proxy.esl.cisco.com:80 --env http_proxy="http://proxy.esl.cisco.com:80 --env https_proxy="http://proxy.esl.cisco.com:80 --DNS=64.104.123.245 -p 80:80 -d local/c7-systemd# 进入 container[root@localhost home]# docker exec -it 992dc27de1cc /bin/bash# 查看 IP[root@992dc27de1cc /]# curl cip.ccIP      : 173.39.xxx.xxx地址    : 新加坡  新加坡数据二  : 新加坡数据三  : 新加坡URL     : http://www.cip.cc/173.39.xxx.xxx

方法2-通过修改 docker daemon 配置添加

在每个 container 运行前,会继承 Docker daemon 的配置,在 /etc/docker/daemon.json 文件下.

# 为 docker daemon 添加 dns,在运行时会为每个 container 添加上cat /etc/docker/daemon.json{  "dns" : [    "8.8.4.4",    "8.8.8.8",    "Your_DNS_SERVER"  ],  "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}

效果一样这里就不演示了。

 

二、为 Docker Daemon 添加代理

和 container 的情况一样,如果不为 Docker Daemon 配置代理的话,是无法使用 search, pull, push 等命令的。

配置如下:

# STEP1-创建文件夹[root@localhost home]# sudo mkdir -p /etc/systemd/system/docker.service.d# STEP2-创建代理文件 http 和 https[root@localhost home]# cat /etc/systemd/system/docker.service.d/http-proxy.conf[Service]Environment="HTTP_PROXY=http://proxy.esl.cisco.com:80/"[root@localhost home]# cat /etc/systemd/system/docker.service.d/https-proxy.conf[Service]Environment="HTTPS_PROXY=http://proxy.esl.cisco.com:80/"# 如果希望访问某些 Docker registries 不是用代理,可以在上面的配置文件后追加[Service]    Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"# STEP3-刷新变更[root@localhost home]# sudo systemctl daemon-reload# STEP4-重启 Docker[root@localhost home]# sudo systemctl restart docker# STEP5-验证代理是否生效[root@localhost home]# systemctl show --property=Environment dockerEnvironment=HTTP_PROXY=http://proxy.esl.cisco.com/ HTTPS_PROXY=http://proxy.esl.cisco.com:80/


Tags:Docker 代理   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Docker 代理配置由于公司 Lab 服务器无法正常访问公网,想要下载一些外部依赖包需要配置公司的内部代理。Docker 也是同理,想要访问公网需要配置一定的代理。Docker 代理分为两...【详细内容】
2020-02-14  Tags: Docker 代理  点击:(77)  评论:(0)  加入收藏
▌简易百科推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  闲余悟道    Tags:Docker   点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(34)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(168)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条