安裝與使用

產生password檔案

docker run --entrypoint htpasswd registry:2 -Bbn simonsu 1234qwer > /data/registry-auth/htpasswd

產生SSL

生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输,输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护

> openssl genrsa -des3 -out selfsign.key 4096

使用上面生成的key,生成一个certificate signing request (CSR)

如果你的key有密码保护,openssl首先会询问你的密码,然后询问你一系列问题,其中Common Name(CN)是最重要的,它代表你的证书要代表的目标,如果你为网站申请的证书,就要添你的域名。

> openssl req -new -key selfsign.key -out selfsign.csr

生成Self Signed证书 selfsign.crt就是我们生成的证书了

> openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt

另外一个比较简单的方法就是用下面的命令,一次生成key和证书

> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

執行

docker run -d -p 5000:5000 --restart=always --name registry \
  -v /data/registry-auth:/auth \
  -v /data/registry-ssl:/ssl \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/ssl/server.crt" \
  -e "REGISTRY_HTTP_TLS_KEY=/ssl/server.key" \
  registry:2

使用

先行登入

docker login [registry-up-address]:[port]

login也可以直接指定user, password等資訊:

docker login -u [username] \
  -p [password] \
  -e [email] [registry-up-address]:[port]

Tag & Push

docker tag [image-name] [registry-up-address]:[port]/[image-name]

ex:

docker tag mysql 192.168.99.100:5000/mysql

注意事項

  • SSL簽證部分所登記的domain name必須與registry的位置相符(例如SSL sign時候登記abc.com,則push時候必須要push到abc.com:5000/mysql這個位置)
  • Client端可以把crt檔案放到docker信任的位置:
sudo mv /data/server.crt  /etc/docker/certs.d/git.linkeriot.io\:5000/ca.crt

Reference

results matching ""

    No results matching ""