前言
最近闲着没事,去阿里云白嫖了一台ECS服务器,大学生教育优惠免费3个月就很良心,
之后就一顿操作,必不可少的就是需要下载docker,用docker拉取镜像
结果发现一直镜像拉取不下来。
解决方法
docker换国内镜像源
docker拉取镜像原理
更换docker的国内镜像源,可以加快镜像的下载。
sudo nano /etc/docker/daemon.json
增加国内镜像
{
"registry-mirrors": [
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
]
}
更多镜像加速地址
https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
自 2024-06-06 开始,国内的 Docker Hub 镜像加速器相继停止服务,可选择为 Docker daemon 配置代理。
重新启动docker
systemctl restart docker
尝试重新拉取镜像
docker pull nginx
到这里发现就可以就拉取镜像了
Frp内网穿透配置
不出意外的话又出意外,拉取jdk的镜像的时候,又超时了
docker pull chenyingzhou/jdk17-mvn-git:latest
阿里云服务器配置代理
配置内网穿透
使用 frp (Fast Reverse Proxy) 将你的本地端口 7890 穿透到服务器的 7890 端口,之后当服务器走7890代理的时候,是走的你本机的网络。
在开始之前我们需要开放阿里云ECS服务器7000和7890端口
配置 frp 服务端
下载 FRP 服务端到服务器:
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
解压下载的文件:
tar -xzf frp_0.42.0_linux_amd64.tar.gz
cd frp_0.42.0_linux_amd64
配置 frps.ini 文件:
[common]
bind_port = 7000
启动 FRP 服务端:
./frps -c ./frps.ini
配置 frp 客户端
下载 FRP 服务端到本机:
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
解压下载的文件:
tar -xzf frp_0.42.0_linux_amd64.tar.gz
cd frp_0.42.0_linux_amd64
配置 frpc.ini 文件:
[common]
server_addr = id地址
server_port = 7000
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 7890
remote_port = 7890
启动 FRP 客户端:
./frpc -c ./frpc.ini
如果没有报错,证明服务器跟本机已经连接上了
配置docker代理
在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
在这个http-proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/"
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1"
重启生效
dockerd 代理的修改比较特殊,改 systemd 的配置,因此需要重载 systemd 并重启 dockerd 才能生效。
sudo systemctl daemon-reload
sudo systemctl restart docker
docker设置代理官网地址
https://docs.docker.com/config/daemon/proxy/
重新拉取镜像测试
到这里问题就解决了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。