首页 > 系统相关 >Linux Docker使用代理

Linux Docker使用代理

时间:2024-08-06 11:18:49浏览次数:10  
标签:http 代理 proxy Linux build docker Docker PROXY

面对docker pull下载速度过慢,甚至根本无法正常下载的问题,下面介绍三种方法解决Docker联网的问题。
内容转载自:https://note.qidong.name/2020/05/docker-proxy/ 有所修改

通常的在终端中设置http_proxy的环境变量不能代理docker pull的流量,原因在于docker的流量是systemd管理的,与终端的环境变量无关。

dockerd代理

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/proxy.conf

在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://192.168.0.10:7890/"
Environment="HTTPS_PROXY=http://192.168.0.10:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

要把上文的代理服务器地址换成你自己的,书写方式与http_proxy环境变量一致 (http://username:password@ip_address:port/)

Container代理

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

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://192.168.0.10:7890",
     "httpsProxy": "http://192.168.0.10:7890",
     "noProxy": "localhost,127.0.0.1,.example.com"
   }
 }
}

这一段本质上是在容器运行后,添加环境变量到容器的环境下,即根据配置自动设置http_proxy https_proxy HTTP_PROXY HTTPS_PROXY等环境变量。因此,对于不使用上述环境变量进行网络连接的linux程序来说,流量可能不会经过代理服务器。

docker build代理

虽然docker build的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入http_proxy等参数。

docker build . \
    --build-arg "HTTP_PROXY=http://192.168.0.10:7890/" \
    --build-arg "HTTPS_PROXY=http://192.168.0.10:7890/" \
    --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

标签:http,代理,proxy,Linux,build,docker,Docker,PROXY
From: https://www.cnblogs.com/rogunt/p/18344773

相关文章

  • ubuntu22.04桌面版安装linux搜狗输入法
    本文参考搜狗输入法官方教程,并针对ubuntu22.04做了一些调整https://pinyin.sogou.com/linux/help.php1.安装fcitx#查看fcitx版本aptinfofcitx|grepVersionWARNING:aptdoesnothaveastableCLIinterface.Usewithcautioninscripts.Version:1:4.2.9.8-5#......
  • laravel:得到linux平台当前脚本的执行用户
    一,代码:<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;classIndexAllCommandextendsCommand{/***Thenameandsignatureoftheconsolecommand.**@varstring*/protected$signature='......
  • laravel:从linux命令行运行command
    一,创建command1,执行命令liuhongdi@lhdpc:/data/api$phpartisanmake:commandIndexAllCommand2,查看创建的文件:<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;classIndexAllCommandextendsCommand{/***Thenameandsignatu......
  • Linux 下 perf 的使用
    目录一、概述1、perf作用2、常用的工具集二、perf工具的使用1、perflist2、perfstat3、perftop4、perfrecord/report4.1perfrecord4.2perfreport5、perfannotate一、概述1、perf作用perf是一个性能分析工具(基于Linux内核提供的性能事件perf_eve......
  • Linux 下 ag 命令的使用
    目录一、概述1、功能2、下载二、常用参数说明三、实例四、帮助文档一、概述1、功能在Linux系统中,ag命令是用于文本搜索的高效工具。它具有快速、灵活的搜索功能,并支持正则表达式匹配。2、下载在下面是各个系统安装ag的命令:sudoapt-getinstallsilversea......
  • Linux 下 objdump 命令的使用
    目录一、概述二、常用参数说明三、实例四、实例分析一、概述objdump工具是用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。该命令常用于Linux下反汇编目标文件或者可执行文件。什么是反汇编反汇编(disassembly)是......
  • Java调用Linux命令行SpringBoot
    原文链接:https://blog.csdn.net/u014628771/article/details/108308337需求在Linux服务器上的SpringBoot程序中,调用gitclone,之后遍历git仓库中的所有文件。遍历git仓库可以使用File类实现,现在的问题是需要在SpringBoot程序中调用gitclone命令。实现方式使用Javanative的Proc......
  • Docker
    文章目录1Docker简介2核心概念3安装3.1准备工作3.2安装docker3.3Docker配置3.3.1权限配置3.3.2镜像仓库加速4使用4.1Docker命令总结4.2镜像相关的命令4.3容器相关的命令4.3.1创建并启动容器4.3.2查看容器4.3.3进入运行中的容器4.3.4查看容器日志4.3.5......
  • 01-初识Docker
    1.常规应用部署面临的问题部署流程复杂环境不一致资源隔离问题交付流程复杂1)JavaWEB架构:代码打包——>上传镜像仓库——>镜像下载至服务器——>服务器运行镜像2)JavaSpingboot一体式架构:代码打包——>上传镜像仓库——>镜像下载至服务器——>服务器运行镜像3)JavaCl......
  • Linux网络编程2
    TCP编程顺序图socket()函数socket()函数用于创建一个新的套接字。它是进行网络编程的第一步,因为所有的网络通信都需要通过套接字来进行。原型:#include<sys/socket.h> intsocket(intdomain,inttype,intprotocol);   domain:指定协议族,对于TCP/IP网络,它通常......