Docker 网络代理配置及防火墙设置的方法步骤

 更新时间:2024年10月10日 09:33:31   作者:li.wz  
在服务器无法直接访问外网的环境中,Docker命令需要通过网络代理连接,本文就来介绍一下Docker 网络代理配置及防火墙设置的方法步骤,感兴趣的可以了解一下

背景

在某些环境中,服务器无法直接访问外网,需要通过网络代理进行连接。虽然我们通常会在 /etc/environment 或 /etc/profile 等系统配置文件中直接配置代理,但 Docker 命令无法使用这些配置。例如,在使用 docker pull 命令从外网拉取镜像时,可能会遇到如下错误:

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 上查看、防火墙状态以及启用/停用防火墙的方法:

查看防火墙状态

systemctl status firewalld

示例输出:

在这里插入图片描述

关闭防火墙

systemctl stop firewalld

在这里插入图片描述

开启防火墙

systemctl start firewalld

在这里插入图片描述

禁用防火墙(防止开机自动启动):

systemctl disable firewalld

在这里插入图片描述

启用防火墙(设置为开机自动启动):

systemctl enable firewalld

在这里插入图片描述

检查已开放的端口

firewall-cmd --list-ports

在进行 Docker 代理配置时,如果防火墙开启,确保相关代理端口(如 2375, 1230)已通过防火墙放行。

方案一:通过手动启动 Docker Daemon 设置代理

停止 Docker 服务:

systemctl stop docker.service

手动启动 Docker Daemon,监听所有网络接口:

nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &

更多详情可参考 Docker Daemon Socket 选项

方案二:配置系统级代理(不推荐)

可以通过修改系统配置文件来设置代理,如 Ubuntu 的 /etc/default/docker 或 CentOS 的 /etc/sysconfig/docker 文件,但这种方法已不再推荐使用。具体配置如下:

HTTP_PROXY="http://[proxy-addr]:[proxy-port]/"
HTTPS_PROXY="https://[proxy-addr]:[proxy-port]/"
export HTTP_PROXY HTTPS_PROXY

方案三:持久化的 Docker 代理配置

这种方法将代理配置持久化,使其在 Docker 服务每次启动时生效。

创建 Docker 服务的 systemd 配置目录:

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

创建代理配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf 并添加以下内容:

[Service]
Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=https://[proxy-addr]:[proxy-port]/"

如果有不需要使用代理访问的内部 Docker 镜像仓库,可以配置 NO_PROXY 变量:

[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"

重新加载配置:

systemctl daemon-reload

重启 Docker 服务:

systemctl restart docker

更多细节请参考 Docker systemd 配置指南

使用 SOCKS5 代理

要为 Docker 配置 SOCKS5 代理,可以按以下步骤操作:

编辑 Docker 服务文件 /usr/lib/systemd/system/docker.service

[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:

systemctl daemon-reload
systemctl restart docker

验证代理配置:

systemctl show --property=Environment docker

如果输出的内容中包含 127.0.0.1:1230 这样的地址,表示配置成功。

测试

可以通过 docker pull 命令测试代理配置是否生效:

docker pull gcr.io/kubernetes-helm/tiller:v2.2.2

使用 ss -antp |grep EST |egrep '1080|1230' 命令查看连接状态,确保代理配置已生效。

到此这篇关于Docker 网络代理配置及防火墙设置的方法步骤的文章就介绍到这了,更多相关Docker 网络代理配置及防火墙设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 搭建lamp应用实例详解

    Docker 搭建lamp应用实例详解

    这篇文章主要介绍了Docker 搭建lamp应用实例详解的相关资料,这里对搭建 LAMP的步骤做了详细介绍,需要的朋友可以参考下
    2016-11-11
  • Linux中安装Docker Compose的步骤

    Linux中安装Docker Compose的步骤

    Docker Compose需要在系统上安装了Docker才能正常工作,如果你的系统上还没有安装Docker,请先安装Docker,下面给大家分享Linux中安装Docker Compose的步骤,感兴趣的朋友一起看看吧
    2024-05-05
  • docker 使用GPU的过程详解

    docker 使用GPU的过程详解

    本文以TensorFlow2.0为例给大家介绍docker 使用GPU的过程详解,文中给大家介绍了基于拉的tf-gpu镜像构建自己的镜像的操作方法,启动镜像检查GPU是否可用的相关知识,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 修改已有docker容器中的内容方法

    修改已有docker容器中的内容方法

    这篇文章主要介绍了修改已有docker容器中的内容方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 详解docker国内镜像拉取和镜像加速registry-mirrors配置修改

    详解docker国内镜像拉取和镜像加速registry-mirrors配置修改

    由于国内访问直接访问Docker hub网速比较慢,拉取镜像的时间就会比较长。一般我们会使用镜像加速或者直接从国内的一些平台镜像仓库上拉取
    2017-05-05
  • docker操作Permission denied无权限的问题解决

    docker操作Permission denied无权限的问题解决

    我们日常需要docker环境进入容器配置或查看一些文件,本文主要介绍了docker操作Permission denied无权限的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Docker实践之python应用容器化

    Docker实践之python应用容器化

    这篇文章主要介绍了Docker实践之python应用容器化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Docker私有仓库管理和删除本地仓库中的镜像

    Docker私有仓库管理和删除本地仓库中的镜像

    这篇文章主要介绍了Docker私有仓库管理和删除本地仓库中的镜像,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Docker安装运行SRS的过程记录

    Docker安装运行SRS的过程记录

    SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,本文给大家介绍下Docker安装运行SRS的过程,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Docker 动态修改容器端口映射的方法

    Docker 动态修改容器端口映射的方法

    这篇文章主要介绍了Docker 动态修改容器端口映射的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论