侧边栏壁纸
博主头像
ayou

中年互联网混子,现居苏州,曾经技术型宅男一个,
爱好吃,爱好睡,体制外,爱岗敬业,
遵纪守法,头发短,见识短,伪Geek,毫无城府。

  • 累计撰写 1626 篇文章
  • 累计收到 13 条评论

如何优雅的给 Docker 配置网络代理

2024-8-22 / 4 评论 / 2446 阅读

因为网络原因,docker根本拉不出来镜像,网上那些镜像网站分分钟不能用,给docker挂个代理基本上是最稳定省事的解决方案了,在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。所以说第一步就是创建 dockerd 相关的 systemd 目录,这个目录下的配置将覆盖 dockerd 的默认配置

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

其中http://proxy.example.com:8080要换成可用的免密代理。多个 NO_PROXY 变量的值用逗号分隔,而且可以使用通配符(*),极端情况下,如果 NO_PROXY=*,那么所有请求都将不通过代理服务器。

重新加载配置文件,重启 dockerd

sudo systemctl daemon-reload
sudo systemctl restart docker

检查确认环境变量已经正确配置:

sudo systemctl show --property=Environment docker

从 docker info 的结果中查看配置项。

docker info

评论一下?

OωO
取消
    1. 头像
      ayou 管理员
      第4楼
      这条命令是用于Linux操作系统中的,用于查询名为"docker"的systemd服务的环境变量设置。下面是对命令各部分的解释:

      sudo:这是一个命令行程序,允许你以超级用户(root)的权限运行其他命令。在Linux系统中,某些操作需要管理员权限,使用sudo可以提供这种权限。

      systemctl:这是systemd系统和服务管理器的命令行界面。systemd是Linux系统中用于初始化系统组件和服务的守护进程。

      show:这是systemctl的一个子命令,用于显示服务或单元的详细状态和配置。

      --property=Environment:这是show命令的一个选项,指定要显示的是服务的"Environment"属性,即环境变量。

      docker:这是你要查询的服务名称。在这个例子中,docker指的是Docker容器服务。

      综合来看,sudo systemctl show --property=Environment docker这个命令是用来查看Docker服务的环境变量设置的。这些环境变量可能包括Docker的配置选项,如日志记录级别、存储驱动等。
      回复
    1. 头像
      ayou 管理员
      地板
      这段内容是Linux系统中的命令行指令,用于管理和控制系统服务。下面是对这些指令的解释:

      sudo: 这是命令行中的一个程序,允许普通用户以超级用户(root)的权限来执行命令。使用sudo时,系统会要求输入用户的密码,以验证身份。

      systemctl: 这是Systemd 'system and service manager' 的缩写,是Linux系统中用于控制服务和系统的命令行工具。

      daemon-reload: 这是systemctl的一个选项,用于重新加载Systemd的配置文件。这通常在修改了服务的配置文件后使用,以便让Systemd识别新的配置。

      restart: 这是systemctl的一个命令,用于重启指定的服务。如果服务正在运行,这个命令会停止服务然后再重新启动它;如果服务没有运行,它将直接启动服务。

      docker: 这是要控制的服务的名称。在这个上下文中,它指的是Docker服务,Docker是一个开源的应用容器引擎,可以打包应用和其依赖到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

      综上所述,这条命令的意思是:以超级用户权限重新加载Systemd的配置,然后重启Docker服务。这通常用于在修改了Docker服务的配置文件之后,确保更改立即生效。
      回复
    1. 头像
      ayou 管理员
      板凳
      这段内容是一个配置文件的一部分,通常用于Linux系统中的系统服务配置。这里定义了三个环境变量,用于设置代理服务器的配置:

      HTTP_PROXY=http://proxy.example.com:8080/:这个环境变量设置了一个HTTP代理服务器的地址和端口号。当应用程序需要通过HTTP协议访问外部资源时,它会通过这个代理服务器进行。

      HTTPS_PROXY=http://proxy.example.com:8080/:这个环境变量设置了一个HTTPS代理服务器的地址和端口号。HTTPS是一种安全的HTTP协议,通常用于加密的网络通信。当应用程序需要通过HTTPS协议访问外部资源时,它会通过这个代理服务器进行。

      NO_PROXY=localhost,127.0.0.1,*.example.com:这个环境变量定义了一个代理服务器的例外列表。在这个列表中的主机名或IP地址将不会被代理,应用程序将直接与这些地址通信。这里的localhost和127.0.0.1是本地机器的地址,*.example.com是一个通配符,表示所有以.example.com结尾的域名。

      总的来说,这段配置用于定义服务在访问网络资源时的代理设置,同时指定了哪些地址不应该通过代理访问。
      回复
    1. 头像
      ayou 管理员
      沙发
      这段命令是Linux系统中使用的命令,用于通过sudo(超级用户权限)执行操作。下面是对这些命令的解释:

      sudo mkdir -p /etc/systemd/system/docker.service.d:

      sudo:以超级用户(管理员)的权限执行后面的命令。
      mkdir:创建一个新目录。
      -p:这个选项告诉mkdir命令,如果目录的上级目录不存在,就创建它们。这样,即使/etc/systemd/system或docker.service.d目录不存在,这个命令也会创建整个路径。
      /etc/systemd/system/docker.service.d:这是要创建的目录路径,它位于/etc/systemd/system目录下,名为docker.service.d。
      sudo touch /etc/systemd/system/docker.service.d/proxy.conf:

      touch:创建一个空文件,如果文件已经存在,更新它的访问和修改时间。
      /etc/systemd/system/docker.service.d/proxy.conf:这是要创建的文件路径,它位于/etc/systemd/system/docker.service.d目录下,文件名为proxy.conf。
      总的来说,这两条命令的目的是创建一个目录和一个文件,这些文件和目录通常用于配置Docker服务的systemd单元文件,比如设置代理服务器等。
      回复