Loading... # Centos下Docker代理配置指南 # 为Docker Daemon配置代理 不影响机器的其他服务, 主要是给docker拉取镜像做一些代理方便拉取hub的镜像 ## 使用`systemd`配置Docker代理 `docker pull` 命令是由 `dockerd` 守护进程执行。而 `ockerd` 守护进程是由 `systemd` 管理。因此,如果需要在执行 `docker pull` 命令时使用 `HTTP/HTTPS` 代理,需要通过 `systemd` 配置。 使用`systemd` 为 dockerd 配置代理有多重方式`systemd`会从 `/lib/systemd/system/docker.service` 中读取配置 也会从`/etc/systemd/system/docker.service.d`和`/lib/systemd/system/docker.service.d`文件夹下读取配置,所以可以再其中一个文件夹中创建一个名为`http-proxy.conf`的文件用来保存代理信息。 * 编辑 `/lib/systemd/system/docker.service` 中的 `[Service]`片段下添加`HTTP_PROXY`和`HTTPS_PROXY`环境变量 * 在`/etc/systemd/system/docker.service.d`下创建一个 `http-proxy.conf`配置文件 配置 `[Service]` 如何添加`HTTP_PROXY`和`HTTPS_PROXY` * 在`/lib/systemd/system/docker.service.d` 下创建一个 `http-proxy.conf`配置文件 配置 `[Service]` 如何添加`HTTP_PROXY`和`HTTPS_PROXY` 这里使用其中一种方式即可, 为 dockerd 创建 HTTP/HTTPS 网络代理的配置文件,文件路径是 /etc/systemd/system/docker.service.d/http-proxy.conf 。并在该文件中添加相关环境变量。 ```bash vi -p /etc/systemd/system/docker.service.d/http-proxy.conf ``` ### 添加相关环境变量 由于我这里docker是我本地Hype-V中的一台虚拟机服务, 这里使用的10.10.7.1:10809 是我宿主机创建的一个nat网关, 用于给虚拟机提供网络服务的, 然后10809是我宿主机的 `v2rayN` 提供的代理端口 ```bash [Service] Environment="HTTP_PROXY=http://10.10.7.1:10809" Environment="HTTPS_PROXY=http://10.10.7.1:10809" # 如果使用了国内镜像源可以配置镜像服务器不使用代理 # Environmeng="NO_PROXY=registry.domain" Environment="NO_PROXY=localhost,127.0.0.1,::1" ``` ***如果代理是需要认证的, 则配置代理时需要知道用户信息*** `http://username:password@10.10.7.1:10809` 需要注意的是 `v2rayN` 需要配置一下开启局域网内连接  ### 刷新配置并重启 docker 服务。 #### 刷新配置 ``` systemctl daemon-reload ``` #### 检查配置 此时可以通过以下指令检查配置是否加载成功: ```bash systemctl show --property Environment docker # 输出 # Environment=HTTP_PROXY=http://10.10.7.1:10809 HTTPS_PROXY=http://10.10.7.1:10809 NO_PROXY=localhost,127.0.0.1,::1 ``` #### 重启docker 重启Docker服务使配置生效 ```bash systemctl restart docker ``` 重启成功之后通过`docker info`指令查看docker服务中的代理配置 ```bash docker info | grep Proxy # 输出 # HTTP Proxy: http://10.10.7.1:10809 # HTTPS Proxy: http://10.10.7.1:10809 # No Proxy: localhost,127.0.0.1,::1 ``` --- ## 通过`daemon.json`配置代理 在`/etc/docker/daemon.json`中增加代理配置 ```bash { "registry-mirrors": [ "https://ytawxqdh.mirror.aliyuncs.com", "https://hub-mirror.c.163.com", "https://docker.m.daocloud.io", "https://ghcr.io", "https://mirror.baidubce.com", "https://docker.nju.edu.cn" ], "proxies": { "http-proxy": "http://10.10.7.1:10809", "https-proxy": "http://10.10.7.1:10809", "no-proxy": "localhost,127.0.0.1,::1" } } ``` 重启Docker服务 ```bash systemctl restart docker ``` 检查配置是否生效 ```bash docker info| grep Proxy ``` **注意:** 通过`daemon.json`方式配置的优先级会高于通过`systemd`配置。 --- # 为Docker 容器配置代理 ## 通过命令行配置代理 ```bash docker run --name=nginx --env HTTP_PROXY="http://10.10.7.1:10809" nginx ``` 验证 ```bash docker inspect nginx | grep -i _PROXY # 输出 # "HTTP_PROXY=http://10.10.7.1:10809" ``` --- # 构建镜像时配置代理 使用 `--build-arg` 参数为构建过程设置代理服务器的地址和端口。同时还可以设置 `NO_PROXY` 参数,以排除不需要通过代理访问的地址。 ```bash docker build --build-arg HTTP_PROXY="http://10.10.7.1:10809" -t xxxname . ``` ```bash docker build --build-arg HTTP_PROXY=http://10.10.7.1:10809 --build-arg HTTPS_PROXY=http://10.10.7.1:10809 --build-arg NO_PROXY=localhost,127.0.0.1,::1 -t xxxname . ``` > # 不要在`Dockerfile`中使用`ENV`指令配置构建过程中使用到的代理配置 > > 使用环境变量配置构建过程中用到的代理配置会把代理服务器打包进镜像中,如果代理服务器是私有化部署的服务器,通过此镜像创建的容器可能访问不到代理服务器,产生难以理解的错误。 > > 同时,由于代理配置中可能包含敏感信息,把代理服务器信息嵌入到镜像中也有可能造成一些安全隐患。 --- # 为Centos配置代理 在CentOS 8上配置代理,通常意味着设置系统级或应用级的代理,以便网络请求通过特定的代理服务器进行转发。以下是详细的步骤和配置指南: 1. **理解代理类型**: * 代理可以基于不同的协议,如HTTP、HTTPS和SOCKS等。 * HTTP代理主要针对Web访问,而SOCKS代理则更为通用。 2. **配置系统级代理**: * 通过编辑 `/etc/profile` 文件,可以设置全局的代理配置。添加类似下面的行到文件中: ``` export http_proxy=http://10.10.7.1:10809 export https_proxy=http://10.10.7.1:10809 export ftp_proxy=http://10.10.7.1:10809 export all_proxy=socks5://10.10.7.1:10808 export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" ``` * 对于某些应用程序,如yum,需要单独设置。编辑 `/etc/yum.conf` 文件,并添加以下内容: ``` proxy=http://10.10.7.1:10809 ``` * 若要取消代理设置,可以使用如下命令: ``` unset http_proxy unset https_proxy unset ftp_proxy ``` 3. **配置应用级代理**: * 对于特定的应用程序,如wget,可以通过编辑其配置文件来设置代理。例如,编辑 `/etc/wgetrc` 文件,并添加以下行: ``` http_proxy=http://10.10.7.1:10809 ftp_proxy=http://10.10.7.1:10809 ``` 4. **图形界面设置**: * 对于图形界面下的浏览器如Firefox,可以在其设置中手动配置代理:Edit -> Preferences -> Advanced -> Network,然后在Connection下点击Settings进行设置。 5. **环境变量设置**: * 如果只想为特定用户设置代理,可以编辑该用户的 `~/.bashrc` 或 `~/.zshrc` 文件,添加相应的 `export` 语句。例如: ``` export http_proxy=http://10.10.7.1:10809 export https_proxy=http://10.10.7.1:10809 export ftp_proxy=$http_proxy ``` * 然后运行 `source ~/.bashrc` 或 `source ~/.zshrc` 使设置生效。 6. **考虑特殊协议**: * 有些协议可能不通过HTTP代理工作,如ICMP。在这种情况下,可能需要配置更底层的网络代理或网关。 7. **验证代理设置**: * 配置完成后,可以通过运行像 `curl https://www.google.com` 这样的命令来测试代理是否工作正常。 此外,在进行这些设置时,请确保了解所使用的代理服务器的IP地址、端口以及是否需要认证信息。同时,考虑到安全性,避免在不必要的情况下泄露这些信息。 总的来说,配置CentOS 8上的代理涉及多个层面,包括系统级别的环境变量设置和应用级别的配置。根据您的具体需求,选择合适的方法进行配置,并确保所有必要的细节都得到妥善处理。 最后修改:2024 年 06 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果文章有帮助到你,请随意赞赏
1 条评论
每个标点都承载着思考的重量。