自建Docker镜像站
自建Docker镜像站
故事背景:国内各大Docker镜像站纷纷停服,公司内部对Docker依赖又比较重,遂准备自建一个Docker内网镜像站,本文档主要依赖https://github.com/dqzboy/Docker-Proxy项目实现。
环境准备
Linux服务器一台
配置足够的存储空间用于缓存镜像,具体空间根据实际情况增减
内核最好大于4.9,可开启BBR加速
域名及SSL证书
可使用内网域名和自签名证书
代理服务器或海外业务专线
如果服务器已经在海外的话忽略
实现过程
1.一键部署脚本
# 国外环境
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"
# 国内环境
bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/dqzboy/Docker-Proxy/install/DockerProxy_Install.sh)"
# 脚本中配置代理服务器地址
部署完成后访问Web页面查看
2.配置Nginx
## docker hub
server {
listen 80;
listen 443 ssl;
## 填写绑定证书的域名
server_name docker-hub.domain.com;
## 证书文件名称(填写你证书存放的路径和名称)
ssl_certificate your_domain_name.crt;
## 私钥文件名称(填写你证书存放的路径和名称)
ssl_certificate_key your_domain_name.key;
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;
location / {
proxy_pass http://代理服务器地址: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;
}
}
3.域名解析
解析域名docker-hub.domain.com到Nginx服务器
4.Docker配置
{
"registry-mirrors": [
"https://docker-hub.domain.com"
]
}
# 或临时方案
# docker pull docker-hub.domain.com/library/nginx:1.19.6-alpine
查看缓存镜像(默认缓存7d,可在脚本中自行设置)