自建一个镜像仓库docker registry

简介

官方的Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到需要的镜像或者将自己的镜像推送上去。 但是,如果服务器没法联网或者不希望将镜像放在公网上,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像。 在使用云平台的时候,它们正常也是会有提供这个镜像仓库服务的。

使用docker来搭建这个服务

准备一个 docker-compose文件

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

把我们本地有存在的一个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

开启 httpBasic的验证

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可以看到需要输入用户名密码。

参考

项目地址 https://github.com/distribution/distribution

最近更新的
...