Docker 网络代理配置及防火墙设置的方法步骤
GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!
【 如果你想靠AI翻身,你先需要一个靠谱的工具! 】
背景
在某些环境中,服务器无法直接访问外网,需要通过网络代理进行连接。虽然我们通常会在 /etc/environment
或 /etc/profile
等系统配置文件中直接配置代理,但 Docker 命令无法使用这些配置。例如,在使用 docker pull
命令从外网拉取镜像时,可能会遇到如下错误:
1 2 3 4 5 | docker pull hello-world Unable to find image 'hello-world:latest' locally Pulling repository docker.io /library/hello-world docker: Network timed out while trying to connect to https: //index .docker.io /v1/repositories/library/hello-world/images . You may want to check your internet connection or if you are behind a proxy.. See 'docker run --help' . |
解决方案
防火墙设置
在进行 Docker 代理配置之前,建议先检查防火墙设置,确保相关端口已开放。以下是在 CentOS 7 上查看、防火墙状态以及启用/停用防火墙的方法:
查看防火墙状态:
示例输出:
关闭防火墙:
开启防火墙:
禁用防火墙(防止开机自动启动):
启用防火墙(设置为开机自动启动):
检查已开放的端口:
在进行 Docker 代理配置时,如果防火墙开启,确保相关代理端口(如 2375, 1230)已通过防火墙放行。
方案一:通过手动启动 Docker Daemon 设置代理
停止 Docker 服务:
手动启动 Docker Daemon,监听所有网络接口:
更多详情可参考 Docker Daemon Socket 选项。
方案二:配置系统级代理(不推荐)
可以通过修改系统配置文件来设置代理,如 Ubuntu 的 /etc/default/docker
或 CentOS 的 /etc/sysconfig/docker
文件,但这种方法已不再推荐使用。具体配置如下:
1 2 3 | HTTP_PROXY="http://[proxy-addr]:[proxy-port]/" HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/" export HTTP_PROXY HTTPS_PROXY |
方案三:持久化的 Docker 代理配置
这种方法将代理配置持久化,使其在 Docker 服务每次启动时生效。
创建 Docker 服务的 systemd 配置目录:
创建代理配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf
并添加以下内容:
1 2 | [Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" |
如果有不需要使用代理访问的内部 Docker 镜像仓库,可以配置 NO_PROXY
变量:
1 2 | [Service] Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com" |
重新加载配置:
重启 Docker 服务:
更多细节请参考 Docker systemd 配置指南。
使用 SOCKS5 代理
要为 Docker 配置 SOCKS5 代理,可以按以下步骤操作:
编辑 Docker 服务文件 /usr/lib/systemd/system/docker.service
:
1 2 3 4 | [Service] Environment="HTTP_PROXY=socks5://127.0.0.1:1230/" Environment="HTTPS_PROXY=socks5://127.0.0.1:1230/" Environment="NO_PROXY=localhost,127.0.0.1,m1empwb1.mirror.aliyuncs.com,docker.io,registry.cn-hangzhou.aliyuncs.com" |
重新加载服务配置并重启 Docker:
验证代理配置:
如果输出的内容中包含 127.0.0.1:1230
这样的地址,表示配置成功。
测试
可以通过 docker pull
命令测试代理配置是否生效:
使用 ss -antp |grep EST |egrep '1080|1230'
命令查看连接状态,确保代理配置已生效。
到此这篇关于Docker 网络代理配置及防火墙设置的方法步骤的文章就介绍到这了,更多相关Docker 网络代理配置及防火墙设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤
这篇文章主要介绍了Gogs+Jenkins+Docker 自动化部署.NetCore,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-06-06如何将gitbub下载的docker-compose项目运行在docker
这篇文章主要介绍了如何将gitbub下载的docker-compose项目运行在docker问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05docker-compose搭建mongodb、mysql的详细过程
这篇文章主要介绍了docker-compose搭建mongodb、mysql的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-11-11Docker容器Container镜像Image如何存储详解
本文主要介绍Docker容器(Container)和镜像(Image)是如何进行数据存储详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09
最新评论