ddddfang's Blog.

docker-hub

字数统计: 498阅读时长: 2 min
2019/01/30 Share

docker hub

1. 使用 docker hub 服务器

1
2
3
4
5
注册dockerhub帐号
sudo docker login 填写用户名和密码
sudo docker tag <imageID> ddddfang/ubuntu:tag ddddfang是账户的名字,所以在push之前需要将image名字改成<账户名/xxx:tag>这种形式
(sudo docker rmi -f imagename:tag 删除某个tag,此时不可以使用imagesid,因为多个tag对应的imagesid是相同的)
sudo docker push

2. 使用私有hub

参考这里 还有 这里

  • 作为服务器的主机( 假定 ip 为 10.28.35.173 ):

    • sudo docker pull registry 拉取 registry
    • sudo docker run --name docker-registry -d -p 5000:5000 registry
      这种情况下其他主机push的images将存储在这个contrainer的 /var/lib/registry/目录下,若container被删除,则push的images也被删除,具体可以使用
      sudo docker exec -ti 5566c310cf39 sh 查看,因此经常用下面这个命令:
    • sudo docker run -d -p 5000:5000 -v /home/fang/docker/registry:/var/lib/registry -v /data/config.yml:/etc/docker/registry/config.yml registry (更常用的命令)
      container中关于docker的配置文件在 /etc/docker/registry/config.yml , 修改 config.yml ,storge字段下添加

      img

      这样以后其他主机就可以用 curl -I -X DELETE http://10.28.35.173:5000/v2/ddddfang/ubuntu/manifests/sha256:acbb1038a3 删除images了
      (ddddfang/ubuntu是使用curl -X 返回的仓库名, acbb1038a3是仓库的sha256值)

    • curl -X GET http://127.0.0.1:5000/v2/_catalog 返回一个json表示已经存在的repos
  • 在其他主机上:

    * `sudo vim /etc/default/docker`
        添加一行  DOCKER_OPTS="--insecure-registry 10.28.35.173:5000"
    * `sudo vim /lib/systemd/system/docker.service`
        + 添加 "EnvironmentFile=-/etc/default/docker",
        + 将 "ExecStart=/usr/bin/dockerd -H fd://" 改为 "ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS"
    * `systemctl daemon-reload`(没有这个命令的貌似只能重启机器了??)
    * `service docker restart`
    * 然后进行push操作
        + `sudo docker tag <imageid> 10.28.35.173:5000/ubuntu:1604`     # tagged image ==>  (10.28.35.173:5000/ubuntu:1604)
        + `sudo docker push 10.28.35.173:5000/ubuntu:1604`
    * `curl -X GET http://10.28.35.173:5000/v2/_catalog`   返回一个json表示已经存在的repos
    
  • 其他主机上下载:

    * `sudo docker pull 10.28.35.78:5000/ubuntu:1604`
    
CATALOG
  1. 1. docker hub
    1. 1.1. 1. 使用 docker hub 服务器
    2. 1.2. 2. 使用私有hub