启动registry:
docker run -d --restart=always --name registry-2 -v /opt/auth/:/auth/ -v /data/registry/registry:/var/lib/registry -v /data/registry/certs:/certs -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_STORAGE_DELETE_ENABLED=true -p 443:443 registry
启动web:
docker run -d --restart=always -p 8082:8080 --name registry-web --link registry-2:westos.org -e REGISTRY_URL=https://heimayi.xyz/v2 -e REGISTRY_TRUST_ANY_SSL=true -e REGISTRY_BASIC_AUTH="d2FuZ3lpOndhbmd5aUAxMjM=" -e REGISTRY_NAME=heimayi.xyz hyper/docker-registry-web
registry启动项里配置私钥
docker run -d \
--restart=always \
--name registry-2 \
-v /opt/auth/:/auth/ \ 密码目录(上一章说过)
-v /data/registry/registry:/var/lib/registry \ 镜像目录
-v /data/registry/certs:/certs \ 私钥目录(下面看私钥怎么来)
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-p 443:443 \
registry
创建certs证书,生成服务器私钥
mkdir /data/registry/certs
cd /data/registry 生成密钥在当前目录 certs
openssl req -newkey rsa:4096 -nodes \
-sha256 -keyout certs/westos.org.key -x509 -days 365 \
-out certs/westos.org.crt
[root@ecs-3 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt
Generating a 4096 bit RSA private key
......................++
................................................................................................++
writing new private key to 'certs/westos.org.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:hangzhou
Locality Name (eg, city) [Default City]:hangzhou
Organization Name (eg, company) [Default Company Ltd]:mayi
Organizational Unit Name (eg, section) []:heimayi
Common Name (eg, your name or your server's hostname) []:mayi-3
Email Address []:root@mayi-3
完成后:
[root@ecs-3 registry]# ll certs/
total 8
-rw-r--r-- 1 root root 2086 Nov 10 09:56 westos.org.crt
-rw-r--r-- 1 root root 3272 Nov 10 09:56 westos.org.key
启动:
docker run -d \
--restart=always \
--name registry-2 \
-v /opt/auth/:/auth/ \
-v /data/registry/registry:/var/lib/registry \
-v /data/registry/certs:/certs \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-p 443:443 \
registry
测试功能
[root@ecs-3 registry]# curl -k -XGET --user mayi:123456 https://127.0.0.1:443/v2/_catalog
{"repositories":[]} (你的用户和密码)
成功后会在/root/.docker/config.json 保存443端口的密码,启动registry-web会用到
启动web页面:
docker run -d -p 8082:8080 --name registry-web \
--link registry-2:westos.org \
-e REGISTRY_URL=https://heimayi.xyz/v2 \
-e REGISTRY_TRUST_ANY_SSL=true \
-e REGISTRY_BASIC_AUTH="passwd" \ #config.json的443的密码
-e REGISTRY_NAME=heimayi.xyz \
hyper/docker-registry-web
访问: 127.0.0.1:8082