官方的Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到需要的镜像或者将自己的镜像推送上去。 但是,如果服务器没法联网或者不希望将镜像放在公网上,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像。 在使用云平台的时候,它们正常也是会有提供这个镜像仓库服务的。
docker-compose.yml
version: '3'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- ./data:/var/lib/registry
docker-compose up -d
用浏览器 打开 http://localhost:5000/v2/_catalog 可以看到有返回了 {"repositories":[]}
把我们本地有存在的一个image push到这个仓库
PS D:\registry> docker tag mysql:latest localhost:5000/mysql:latest
PS D:\registry> docker push localhost:5000/mysql:latest
再一次用浏览器 打开 http://localhost:5000/v2/_catalog 可以看到 {"repositories":["mysql"]}
docker-compose down
version: '3'
services:
registry:
image: registry:2
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- ./data:/var/lib/registry
- ./auth:/auth
environment:
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
用 linux下 htpasswd 生成一个
htpasswd -Bbn malema malema > ./htpasswd
cat ./htpasswd
malema:$2y$05$5q2qmGpA/tteUa/Y354rLejAf6oTxq0o2uCpXPZO0sg2KpBIBcDoG
把这一串字符串放到htpasswd文件里面 继续用浏览器打开 http://localhost:5000/v2/_catalog可以看到需要输入用户名密码。