技巧杂烩

在 Linux 上配置 Docker 使用系统代理

在不能直接访问互联网的环境下,设置 Docker 代理配置

LinuxDocker

在 Linux 上配置 Docker 使用系统代理

在某些网络环境中,比如网络 NAT ,或者其他复杂的网络中,需要使用代理才能访问互联网。Docker 的代理配置略显复杂,在 Linux 中,Docker 默认不会自动使用系统代理进行镜像构建和下载。

dockerd 代理

在执行 docker pull 或者 docker build 等命令时,是由 Docker 的守护进程 dockerd 来执行的。

在大多数基于 systemd 的 Linux 发行版中,dockerd 的运行环境通常是由 systemd 来配置和管理的。

因此,需要在 systemd 中配置 dockerd 的环境:

 1创建 Docker 服务的配置目录

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

 2然后创建配置文件 proxy.conf

sudo touch /etc/systemd/system/docker.service.d/proxy.conf

 3在文件中添加以下内容

[Service]
Environment="HTTP_PROXY=http://proxy.example:port"
Environment="HTTPS_PROXY=http://proxy.example:port"
Environment="NO_PROXY=localhost,127.0.0.1"

其中,proxy.example:port 需要替换成你实际使用的代理地址和端口

 4重新加载 systemd 配置,并重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

Container 代理

在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json

{
    "proxies": {
        "default": {
            "httpProxy": "http://proxy.example:port",
            "httpsProxy": "http://proxy.example:port",
            "noProxy": "localhost,127.0.0.1"
        }
    }
}

文章标题:在 Linux 上配置 Docker 使用系统代理

文章作者:浅小沫

文章链接:https://blog.truimo.com/posts/docker-build-proxy-linux


您可以自由在任何媒介以任何形式分享本作品,但需署名,且不得用于商业目的或改编。若分发衍生作品,须采用相同的许可协议。

本博客的所有原创内容采用 CC BY-NC-ND 4.0 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。