前言
一直以来,Dockerhub
在国内的服务肯定算不上稳定:缓慢的拉取速度,时断时连的网络环境……所以我们一般使用国内的Dockerhub
镜像源来解决这个问题。
不过有的时候,这些国内的镜像源也不算是很稳定。所以,我们来部署一套私有镜像源来解决这个问题。
Github项目
第一步当然是去找个现成的部署项目。经过寻找,我们找到了dqzboy/Docker-Proxy,然后我们用脚本无脑一键安装。这里需要安装到你用来代理的服务器(一般来说在海外)
apt -y install curl
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"
随后编辑一下yaml
,设置一下端口对应,我这里设置到51000
。
vim /data/registry-proxy/docker-compose.yaml
示例编辑
dockerhub:
container_name: reg-docker-hub
image: dqzboy/registry:latest
restart: always
environment:
- OTEL_TRACES_EXPORTER=none
#- http=http://host:port
#- https=http://host:port
volumes:
- ./registry/data:/var/lib/registry
- ./registry-hub.yml:/etc/distribution/config.yml
#- ./htpasswd:/auth/htpasswd
ports:
- 51000:5000
networks:
- registry-net
Nginx反向代理
随后我们在Nginx
中设置一下反向代理。
这里我们就使用一个基础认证,来实现一下。
## docker hub
##
server {
listen 80;
listen 443 ssl;
## 填写绑定证书的域名
server_name hub_name.url.suffix;
## 证书文件名称(填写你证书存放的路径和名称)
ssl_certificate /somefolders/cert.pem;
## 私钥文件名称(填写你证书存放的路径和名称)
ssl_certificate_key /somefolders/key.pem;
ssl_session_timeout 1d;
#ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_buffer_size 8k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
root /var/www/dockerhub;
index index.html index.htm index.nginx-debian.html;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:51000/;
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-Nginx-Proxy true;
proxy_buffering off;
proxy_redirect off;
}
}
设置auth用户与密码
一般来说,安装了Nginx
就已经安装了htpasswd
这个密码管理软件。我们直接搞一个新用户然后设置密码就行。
htpasswd -c /etc/nginx/.htpasswd docker_user
输入两遍密码就可以设置一个密码。
重启服务
service nginx restart
验证
我们访问设置的DockerHub
镜像源,会跳出一个用户名密码设置。我们直接进行验证就能看到结果。
http://hub_name.url.suffix/v2/
Comments NOTHING