用Registry_container_搭建_docker_registry_私服手把手带截图教程
手把手截图版
0, 1, 2 步骤都是在服务端完成。
0. 生成自签名证书
openssl 版本 3.0.8:

我打算使用域名 eratoregistry.com 生成证书:
mkdir -p certs
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/erato.key \
-addext "subjectAltName = DNS:eratoregistry.com" \
-x509 -days 365 -out certs/erato.crt
填写基本信息,可以瞎填

可以看到已经生成好了:

1. 设置用户名密码
使用 htppass
$ mkdir auth
$ docker run \
--entrypoint htpasswd \
httpd:2 -Bbn erato 123456 > auth/htpasswd
2. 基于证书和用户名跑 registry
我当前所在的路径是 /erato, docker-compose.yml 如下
registry:
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/erato.crt
REGISTRY_HTTP_TLS_KEY: /certs/erato.key
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- /erato/data:/var/lib/registry
- /erato/certs:/certs
- /erato/auth:/auth
docker compose up -d
好了,一个 registry server 已经跑起来了~
3. 客户端访问
找同一 vpc 下的另一台安了 docker 的服务器,作为客户端。
从服务端 copy 给客户端一份 erato.crt
文件:

在客户端上,复制进下面的目录:
mkdir -p /etc/docker/certs.d/eratoregistry.com/
cp erato.crt /etc/docker/certs.d/eratoregistry.com/ca.crt
登录
docke login eratoregistry.com
用户名为 erato, 密码 123456
可以 pull/push 了:
docker pull alpine:3.14
docker tag alpine:3.14 eratoregistry.com/alpine:3.14
docker push eratoregistry.com/alpine:3.14
docker pull eratoregistry.com/alpine:3.14

OK 完成!
Last updated