国内Docker镜像无法使用解决方案

胡海龙胡海龙
1 min read

本文介绍的是我自己的解决方案,因为我有两台云服务器,一台香港的,一台硅谷的,所以还是可以正常访问到外网的,只不过需要对现有的内网服务器进行配置,自己使用的电脑就不说了,有VPN直接使用,下面主要介绍在服务器环境下如何配置,我家里的服务器是Centos7,所以就以它为例。

安装 shadowsocks-libev

如果你的服务器是 Ubuntu系统的话直接可以通过命令安装,下面我把它的官方GitHub放到下面。 shadowsocks-libev github 在 Centos 中我们需要先添加一下yum源,然后再通过yum命令去安装,依次执行下面的三条命令。

cd /etc/yum.repos.d/
yum.repos.d]# curl -O https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo
yum install -y shadowsocks-libev

验证安装

完成安装后会有这些命令可以使用:ss-local, ss-manager, ss-nat, ss-redir, ss-server, ss-tunnel。因为我们此时是想作为客户端使用,所以只需要关注ss-local命令。我们直接执行ss-local命令,我的直接运行成功。如果抱错:ss-local: error while loading shared libraries: libmbedcrypto.so.0: cannot open shared object file: No such file or directory,则使用root身份执行下面的命令:

cd /usr/lib64
ln -s libmbedcrypto.so.1 libmbedcrypto.so.0

添加配置文件

安装完后它默认会在/etc/shadowsocks-libev/下面创建了一个名为config.json的文件。如下:

{
    "server": "example.zzz.buzz",
    "server_port": 10443,
    "local_port": 1080,
    "password": "zzz.buzz",
    "method": "aes-256-cfb",
    "mode": "tcp_and_udp",
    "timeout": 600
}
  • server: 必填项,对应填入服务端的IP就可以

  • server_port: 必填项,对应服务端暴露出允许连接的端口号

  • local_port: 必填项,本地 shadowsocks 客户端 SOCKS5 代理要监听的端口

  • password: 必填项,对应服务端对应该端口设置的密码

  • method: 必填项,对应服务端的加密方式

  • mode: 选填,默认tcp_only

  • timeout: 选填,不活动时保持的时间,默认60秒

启动客户端

启动客户端执行下面的命令

systemctl enable --now shadowsocks-libev-local
systemctl start shadowsocks-libev-local

执行完上面的命令后同时也设置了开机自启,至此完成了所有的配置,下面看看状态是否成功。

systemctl status shadowsocks-libev-local

如果要查看所有日志可以通过下面的命令

journalctl -u shadowsocks-libev-local

配置Docker Socks5 代理

启动后如果我们直接拉取发现还是不行,这是因为docker没有配置代理的问题,我们本地的1080是socks5协议,因此我们接下来为Docker配置一下代理,这样docker的所有网络请求就会通过我们的代理。

创建配置文件

首先创建文件夹 /etc/systemd/system/docker.service.d ,如果有的话就不用了,然后在文件夹下创建一个 http-proxy.conf 文件,名称无所谓,主要以.conf为后缀就行。然后在里面配置如下内容:

[Service]
Environment="HTTP_PROXY=socks5://127.0.0.1:1080"
Environment="HTTPS_PROXY=socks5://127.0.0.1:1080"

重启生效

systemctl daemon-reload
systemctl restart docker

验证效果

docker pull openjdk:17-jdk-alpine

下面是拉取截图

image.png

0
Subscribe to my newsletter

Read articles from 胡海龙 directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

胡海龙
胡海龙