自建一个镜像仓库docker registry
简介
官方的Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到需要的镜像或者将自己的镜像推送上去。 但是,如果服务器没法联网或者不希望将镜像放在公网上,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像。 在使用云平台的时候,它们正常也是会有提供这个镜像仓库服务的。
使用docker来搭建这个服务
准备一个 docker-compose文件
docker-compose.yml
yml
version: '3'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- ./data:/var/lib/registry后台启动
bash
docker-compose up -d用浏览器 打开 http://localhost:5000/v2/_catalog 可以看到有返回了
测试 推送 image
把我们本地有存在的一个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 可以看到
关闭
bash
docker-compose down开启 httpBasic的验证
yml
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可以看到需要输入用户名密码。
