前不久刚换的镜像源,这二天又访问不了了,真的是太苦了。😕
既然开源的镜像源容易被X,何不自己搭建一个?说干就干。😄 这篇文章教大家如何手搓一个 Docker 加速服务器。前提条件是搞一个非大陆的服务器。现在很多云厂商aliyun等都有海外服务器购买。
下面这里是安装 Docker 与 Docker compose 的方法,已安装的请忽略~
# Ubuntu / Debian 系
sudo apt-get update
sudo apt-get upgrade
CentOS、Rocky RHEL系列操作系统
yum update
yum upgrade
安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
安装 Docker compose
GayHub:https://github.com/docker/compose/releases/latest
参考GayHUB地址查找最新版本号,将下方的版本号修改为最新(不改也没啥事,可以忽略。。。)
sudo curl -L "https://github.com/docker/compose/releases/download/2.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 这里的版本号是基于2024年6月9日最新的 2.27.1
授予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
测试
docker-compose -v
安装成功会显示 docker-compose 版本
新建一个docker-compose.yml文件
version: '3'
services:
docker-registry:
image: registry:2
container_name: registry-server
restart: always
ports:
- "5000:5000"
volumes:
- /data/docker-registry:/data # 数据存放目录
environment:
- REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
- REGISTRY_PROXY_USERNAME=dockerhub账户
- REGISTRY_PROXY_PASSWORD=dockerhub密码
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data
因为Docker私服访问请求也要求是https,当然可以设置为http,但是为了后续节省麻烦。我们申请一个域名。然后再申请免费的SSL证书。
域名推荐aliyun购买,买.xyz域名只要7RMB第一年。
免费的SSL证书推荐:https://freessl.cn/
我们再使用nginx进行反向代理,配置文件如下:
#开启gzip压缩功能,目的:提高传输效率,节约带宽
gzip on;
#限制最小压缩,小于1字节文件不会压缩
gzip_min_length 1;
#定义压缩的级别(压缩比1-9(值越大压缩比越大),文件越大,压缩越多,但cpu使用占用会越多)
gzip_comp_level 4;
#定义压缩文件的类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
ssl_certificate /etc/nginx/public.pem;
ssl_certificate_key /etc/nginx/private.pem;
server {
listen 80;
server_name xxx.com www.xxx.com;
#核心代码
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
server_name xxx.com www.xxx.com;
client_max_body_size 60M;
client_body_buffer_size 512k;
location / {
#保留代理之前的host 包含客户端真实的域名和端口号
proxy_set_header Host $host;
#保留代理之前的真实客户端ip
proxy_set_header X-Real-IP $remote_addr;
#这个Header和X-Real-IP类似,但它在多级代理时会包含真实客户端及中间每个代理服务器的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://www.xxx.com:5000;
}
}
编辑 /etc/docker/daemon.json
内容如下:
{
"registry-mirrors": ["https://xxx.com"]
}
重新加载 systemd
守护进程并重启 Docker
systemctl daemon-reload
systemctl restart docker
检查docker registry
拉取mysql镜像看看,速度一般般,因为服务器在US:
我的海外镜像服务器已经搭建好啦,如有需要地址的留言。
All comments