docker hub
1. 使用 docker hub 服务器
1 | 注册dockerhub帐号 |
2. 使用私有hub
作为服务器的主机( 假定 ip 为 10.28.35.173 ):
sudo docker pull registry
拉取 registrysudo 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字段下添加这样以后其他主机就可以用
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`