下面是搭建docker内网私服的方法(docker-registry with nginx&ssl on centos)的完整攻略,包含了两个示例说明:
准备工作
- 确保已经安装
docker
和docker-compose
- 安装
nginx
和openssl
示例一:使用纯docker-registry
搭建私服
- 创建配置文件
config.yml
:
version: 0.1
log:
level: debug
formatter: json
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
tls:
certificate: /usr/local/nginx/ssl/registry.crt
key: /usr/local/nginx/ssl/registry.key
其中:
- http.addr
设置为:5000
表示服务监听在本机的5000
端口。
- http.tls
表示开启SSL/TLS加密;certificate
和key
分别指定证书和私钥的路径。
- storage
指定镜像的存储路径;filesystem
表示使用本地文件系统存储,rootdirectory
指定存储路径为/var/lib/registry
。
- 运行服务:
docker run -dit --name registry -p 5000:5000 \
-v `pwd`/config.yml:/etc/docker/registry/config.yml \
registry:2
其中:
- -p
参数指定了服务暴露的端口5000
。
- -v
参数将本地的config.yml
配置文件挂载到容器中的/etc/docker/registry/config.yml
路径下。
- 验证服务是否正常:
curl -k https://localhost:5000/v2/
如果输出{}
表示服务正常运行。
示例二:使用docker-registry
与nginx
结合搭建私服
- 创建
docker-compose.yml
配置文件:
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- registry
restart: always
registry:
image: registry:2
volumes:
- ./registry:/var/lib/registry
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /etc/nginx/ssl/registry.crt
REGISTRY_HTTP_TLS_KEY: /etc/nginx/ssl/registry.key
REGISTRY_STORAGE_DELETE_ENABLED: "true"
restart: always
其中:
- nginx
服务使用nginx
镜像,开放443
和80
端口,挂载nginx.conf
和ssl
目录,通过depends_on
依赖于registry
服务。
- registry
服务使用registry:2
镜像,挂载registry
目录,设置SSL/TLS证书和私钥的路径,开启镜像删除功能。
- 创建
nginx.conf
配置文件:
```
events {
worker_connections 1024;
}
http {
upstream docker-registry {
server registry:5000;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/registry.crt;
ssl_certificate_key /etc/nginx/ssl/registry.key;
location /v2/ {
proxy_pass https://docker-registry;
proxy_set_header Host $http_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;
proxy_read_timeout 900;
}
}
}
```
其中:
- upstream
定义了docker-registry
后端服务。
- server
定义了nginx
服务器,监听443
端口,设置SSL/TLS证书和私钥的路径。
- location
定义了请求的URL前缀为/v2/
的请求转发到docker-registry
后端服务。
- 创建SSL/TLS证书:
openssl req \
-newkey rsa:2048 -nodes -keyout ssl/registry.key \
-x509 -days 365 -out ssl/registry.crt
这个命令会生成一个自签名的证书。
- 启动服务:
docker-compose up -d
- 验证服务是否正常:
curl -k https://example.com/v2/
如果输出{}
表示服务正常运行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:搭建docker内网私服的方法(docker-registry with nginx&ssl on centos) - Python技术站