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://127.0.0.1:8888/"
Environment="HTTPS_PROXY=http://127.0.0.1:8888/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

Container 代理

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

{"proxies":{"default":{"httpProxy": "http://127.0.0.1:8888","httpsProxy": "http://127.0.0.1.com:8888","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 模式。

重启生效

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

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

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

sudo systemctl daemon-reload
sudo systemctl restart docker

配置docker pull代理相关推荐

  1. docker配置HTTP/HTTPS代理访问外网

    一. 设置代理原因     因为公司安全需要,所有外网需配置代理后才能上网,docker pull centos会报错: docker: Error response from daemon: Get ...

  2. 配置docker 代理,连接外部网络并下载docker镜像

    一.配置代理: Ubuntu下路径是: /etc/default/docker 不是 /etc/systemd/system/docker.service.d/docker-proxy.conf /e ...

  3. docker镜像代理配置

    docker镜像代理配置 1.背景及概述 1.1.背景 项目中经常需要基于基础镜像构建定制化的镜像,所以经常需要拉取镜像文件进行构建,但是受公司网络的原因,无法直接访问docker.hub进行镜像的拉 ...

  4. docker pull通过http代理服务拉取镜像docker配置通过私库拉取镜像

    docker pull通过http代理服务拉取镜像&docker配置通过私库拉取镜像 一.docker pull通过http代理下载镜像 1.修改/etc/systemd/system/mul ...

  5. docker pull php7,Docker pull php:7.1-fpm的php.ini配置修改

    今天,换了 Deepin 操作系统,开发环境是通过 Docker 搭建的,具体结构如下: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e ...

  6. Docker网络代理配置

    Docker网络代理配置 创建目录 mkdir /etc/systemd/system/docker.service.d 创建http-proxy.conf文件,增加以下内容 cat > /et ...

  7. Confluence7 配置docker Nginx https 反向代理

    前言:首先默认你的Confluence 已经安装好并且设置好证书,此处不做证书导入等介绍. 1.docker 1.拉取仓库nginx镜像,不加版本号默认拉取最新的版本#docker pull ngin ...

  8. docker安装wget_Docker: docker pull, wget, curl, git clone 等如何更快?

    1) Docker 配置 1.1) daemon.json 配置镜像 路径: /etc/docker/daemon.json 文档: Config Daemon registry-mirrors 设定 ...

  9. 如何配置 Docker 使用代理服务器

    因为网络的原因,我们拉取不到 docker 官方的容器, 还有 gcr.io 的容器,github上的容器,因此需要通过代理来拉取容器镜像.使用 Docker 的时候,有3种情况需要使用代理服务器,配 ...

最新文章

  1. 一位中国博士把整个 CNN 都给可视化了,可交互有细节,每次卷积 ReLU 池化都清清楚楚...
  2. c语言算法6,c语言6函数和算法.ppt
  3. 成功解决ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any(
  4. usnews 计算机专业排名,2019美国大学USNews计算机专业排名
  5. Linux安装宝塔(Bt-Panel),修改用户名或密码,查看面板入口
  6. linux安装zlib_Linux zlib和libpng安装(LAMP环境搭建)
  7. Linux配置IP常用命令
  8. Kubernetes攻略之新手上路
  9. pycharm常用设置(keymap设置及eclipse常用快捷键总结)
  10. mysql image类型_MyCat教程【mysql主从复制实现】
  11. git 取消 所有暂存_Git版本管理完全指南—学好Git一文足矣
  12. MPLS在ATM技术上实现的研究
  13. 正则表达式在NLP的基本应用
  14. 十四周二次课(3月27日)
  15. WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)
  16. html5效果案例,10个优秀HTML5网站案例赏析
  17. 黑科技智能家电新生儿“智能冰箱”
  18. 一文带你深入了解 SaaS(软件即服务) 的架构设计
  19. Ts的infer类型推导
  20. Centos7磁盘阵列部署与修复

热门文章

  1. 分享一段关于处理迈克尔逊干涉仪大学物理实验(吉林大学)实验数据的c程序。
  2. 模拟黑洞图像_实时模拟黑洞视觉效果 | 开源
  3. 蒙特利尔大学工学院流程
  4. ADSL DNS服务器地址大全
  5. Qt编写物联网管理平台30-用户登录退出
  6. 21杭电计算机考研回忆录
  7. 频率可调SPWM三相输出:
  8. linux C++ 使用openssl rsa算法实现对计算机物理地址进行签名和认证
  9. 逍遥花主、神蚕九变、玉蚌仙珠三部武侠小说
  10. 全国计算机高新技术证书积分,计算机高新技术证积分入户入学首选,报考条件及考试时间安排...