首先docker部署完成的前提:
docker pull registry
創(chuàng)建幾個(gè)目錄與容器內(nèi)的目錄映射:將容器內(nèi)的文件映射到本地,以此來(lái)達(dá)到持久化的效果
mkdir /opt/auth
mkdir /opt/registry
yum install -y httpd-tools (可以把密碼加密)
htpasswd -Bbn test 123456 > /opt/auth/htpasswd 加密密碼
[root@mayi-2 auth]# cat htpasswd
test:$2y$05$SNE8IfyVZ5tq6Nw9Q2Sb5OfxhSAT6RaMsSCAgjleynhLivYv0sGXm
docker run -d -p 5000:5000 \
-v /opt/auth/:/auth/ \
-v /opt/registry/:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
解釋:
docker run -d -p 5000:5000 \
-v /opt/auth/(本地目錄):/auth/(容器目錄) \
-v /opt/registry/(本地目錄):/var/lib/registry \ (容器目錄)
-e "REGISTRY_AUTH=htpasswd" \ (以 htpasswd 的方式認(rèn)證)
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ (注冊(cè)認(rèn)證)
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ (認(rèn)證的用戶密碼)
registry
測(cè)試成果:
[root@mayi-2 auth]# docker login 127.0.0.1:5000
Username: test
Password:
Login Succeeded
或者:
[root@mayi-2 opt]# curl -XGET --user test:123456 http://127.0.0.1:5000/v2/_catalog
{"repositories":["registry"]}
后續(xù):
上面的啟動(dòng)方式重啟docker后,容器進(jìn)程會(huì)消失。雖然做了持久化。但是容器不會(huì)自動(dòng)起來(lái)
所以增加啟動(dòng)參數(shù)【--restart=always】,保證重啟后倉(cāng)庫(kù)數(shù)據(jù)也會(huì)存在
docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /opt/auth/:/auth/ \
-v /opt/registry/:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
[root@mayi-2 opt]# systemctl restart docker
[root@mayi-2 opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@mayi-2 opt]# docker run -d -p 5000:5000 --restart=always --name registry2 -v /opt/auth/:/auth/ -v /opt/registry/:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
15bf7d3451a6d0b17876d2b0c44e0fa24fd4a032b6f8edd23fa4f2418348c19d
[root@mayi-2 opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15bf7d3451a6 registry "/entrypoint.sh /etc…" 6 seconds ago Up 5 seconds 0.0.0.0:5000->5000/tcp registry2
[root@mayi-2 opt]# curl -XGET --user test:123456 http://127.0.0.1:5000/v2/_catalog
{"repositories":["registry"]}
[root@mayi-2 opt]# systemctl restart docker
[root@mayi-2 opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15bf7d3451a6 registry "/entrypoint.sh /etc…" 56 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp registry2
[root@mayi-2 opt]# curl -XGET --user test:123456 http://127.0.0.1:5000/v2/_catalog
{"repositories":["registry"]}
后續(xù):部署registry-web,頁(yè)面訪問(wèn)