封云亭 发表于 2018-5-27 08:42:52

docker私有仓库配置

  环境:
  Ubuntu 16.04.3
  仓库IP:192.168.233.127
  客户端IP:192.168.233.123
  

  1、安装docker
  apt-get install -y docker.io
  systemctl enable docker
  2、在仓库上配置:
  docker pull registry:2             拉取仓库容器
  docker run -d -p 5000:5000 --restart=always -v /data/registry:/var/lib/registry --namedocker-registry2 registry
  其中/data/registry为物理机路径,/var/lib/registry为容器里面的路径
  3、在客户端配置:
  这时候可先尝试提交镜像:
  docker push 192.168.233.127:5000/redis-nod2
  


  

  因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改客户端docker启动配置文件 /etc/default/docker,在其中增加 DOCKER_OPTS="--insecure-registry=192.168.233.127:5000 "如下所示:

  然后重启服务:systemctl restart docker.service
  从图可知配置已生效:

  4、提交镜像
  可以在客户端随便找个镜像(如果没有可以拉redis),然后修改tag
  docker tag redis 192.168.233.127:5000/redis-node
  docker push 192.168.233.127:5000/redis-node
  看到上传成功即可。
  5、查看
  方法一:curl -XGET http://192.168.233.127:5000/v2/_catalog 可查看
  方法二:可在仓库宿主机上查看/data/registriy里查看以redis-node为名的目录
  方法三:curl -XGET http://192.168.233.127:5000/v2/busybox-123/tags/list其中busybox-123为镜像名
  6、删除
  docker私有仓库v2版本中的镜像,官方不建议删除,但是也提供了删除接口:
  DELETE /v2/<name>/manifests/<reference>Host: <registry host>Authorization: <scheme> <token>
  删除的原理就是把索引删掉,但磁盘上的数据是删不掉的。这是由于各个镜像之间的不同层共用的关系,可能导致删除一个镜像后其余的镜像也无法使用了。
  
页: [1]
查看完整版本: docker私有仓库配置