一、使用registry镜像创建私有仓库

安装Docker后,可以通过官方提供的registry镜像来简单搭建本地私有仓库环境

  1. $ docker run -d -p 5000:4000 registry
  2. // 这将自动下载并启动一个registry容器,创建本地的私有仓库服务。
  3. 默认情况下,会将仓库创建在容器的 /tmp/registry目录下。也可以通过
  4. -v参数来指定镜像文件存放在本地的指定路径。例如:
  5. $ docker run -d -p 5000:4000 -v /app/developers/liq/docker/registry:/var/lib/registry -v /app/developers/liq/docker/registry/config.yml:/etc/docker/registry/config.yml registry
  6. 其中,5000是主机对应端口,4000是容器对应端口
  7. 查看registry启动日志:docker logs containerId

二、管理私有仓库

首先私有仓库的地址:192.168.10.222:4000

1、查看系统已有镜像

$ docker images

2、标记镜像

$ docker tag django:latest 192.168.10.222:5000/local-django
其中:
192.168.10.222:5000  是主机对外映射地址
local-django 是镜像名称

$ docker images

3、上传镜像

$ docker push 192.168.10.222:5000/local-django

报错问题解决:

错误:
The push refers to repository [192.168.10.222:5000/local-django]
Get https://192.168.10.222:5000/v2/: http: server gave HTTP response to HTTPS client

解决:
步骤1:
在/etc/docker下创建daemon.json,内容如下:
{
  "registry-mirrors": ["https://registry.docker-cn.com","http://192.168.10.222:5000"],
  "insecure-registries":["192.168.10.222:5000"]
}

步骤2:
systemctl restart docker.service    // 重启docker
或 service docker start/restart

步骤3:
重启容器

4、查看仓库的镜像(v2版本API)

$ curl http://192.168.10.222:5000/v2/local-django/tags/list
// 具体镜像信息

其中:
192.168.10.222:5000  是主机对外映射地址
local-django 是镜像名称


$ curl  http://192.168.10.222:5000/v2/_catalog // 镜像列表

5、进入私有仓库

$ docker exec -it containerId sh

6、删除私有仓库镜像

(1)上传镜像的Etag
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
  -I \
  -X HEAD http://192.168.10.222:5000/v2/local-ubuntu/manifests/latest

(2) 删除本地数据
挂载到本机目录的数据

(3) 发送请求,删除镜像的元数据
curl -I -X DELETE http://192.168.10.222:5000/v2/local-ubuntu/manifests/sha256:92c414f2cf966fd4c6d60bc71180737bf878eeca3654cad82991a1e02d885d37

(4) 进入容器执行垃圾回收
registry garbage-collect /etc/docker/registry/config.yml

(5)重启registry

实际探索发现,其实只要步骤2和步骤5就可以了,执行步骤2、3、4没用

鸡肋:不知道什么时候Docker才能修复删除私库镜像删除不掉的bug