vue.config.js配置代理不生效_一文详解Docker 代理脱坑

5b7e3d2db8ff5bed67bb6310c982aed7.png

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!

Java架构筑基​zhuanlan.zhihu.com
aa0b4950b90958be5d13dcad41f243fc.png
  • Java架构筑基——专注于Java技术的研究与分享!
  • 后续文章将首发此专栏!
  • 欢迎各位Java工程师朋友投稿和关注
  • # 链接 Java程序员福利"常用资料分享"

Docker 代理配置

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

Docker 代理分为两种,一种是为运行的 Container 配置代理,用于下载一些依赖包以及访问公网。另一种是为 Docker Daemon 配置代理,用于支持 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.cc
IP      : 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.cc
IP      : 173.39.112.xxx
地址    : 新加坡  新加坡

数据二  : 新加坡

数据三  : 新加坡

URL     : http://www.cip.cc/173.39.112.xxx

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

2. 局部修改

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

# 创建 container
docker 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.cc
IP      : 173.39.112.xxx
地址    : 新加坡  新加坡

数据二  : 新加坡

数据三  : 新加坡

URL     : http://www.cip.cc/173.39.112.xxx

方法2-在 Docker-file 添加

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

FROM local/c7-systemd

ENV 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_URL

RUN yum -y install httpd; yum clean all; systemctl enable httpd.service

EXPOSE 80

CMD ["/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.cc
IP      : 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 docker
Environment=HTTP_PROXY=http://proxy.esl.cisco.com/ HTTPS_PROXY=http://proxy.esl.cisco.com:80/

# 链接 Java程序员福利"常用资料分享"

4c3b7e93b64732cc00ca08e037555d81.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值