近日,在使用SJTUG提供的镜像加速拉取镜像的时候死活拉不下来,不管是 docker hub 还是国内的某些镜像站,同样都无法使用,虽然现在还有部分可用的镜像站,但也说不准某一天因为某些原因同样停止提供了,这时候就要考虑其他的解决方案了,这篇文章教大家如何自己搭建一个 Docker 加速服务器。
(前提是需要一台海外服务器!!!)
我的博客: https://www.itwk.cc/post/1497.html
安装Docker Docker compose
下面这里是安装 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=username
- REGISTRY_PROXY_PASSWORD=password
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data
- http_proxy=http://10.0.0.1:1080 # proxy
- https_proxy=http://10.0.0.1:1080 # proxy
**注意:**如果实在是没有海外服务器,还有一个办法,通过局域网 HTTP/HTTPS 代理来加速Docker
镜像的拉取,最后两条海外服务器无需配置。
到现在Docker私有加速服务就算搭建好了~
个人建议,使用NGINX
或者其他WEB中间件反向代理镜像服务器并启用SSL
附上Nginx
配置文件示例:
server {
listen 80;
server_name your_domain_name;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name your_domain_name;
ssl_certificate /etc/pki/tls/certs/ssl.pem;
ssl_certificate_key /etc/pki/tls/private/ssl.key;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}
Docker配置
编辑/etc/docker/daemon.json
没有则新建一个,然后内容如下
{
"registry-mirrors": ["https://your_registry_url"] # your_registry_url为你的加速地址
}
重新加载systemd
守护进程并重启Docker
systemctl daemon-reload
systemctl restart docker
拉取镜像测试
速度还是很ok的~