创建账户
略
Create Repository
接着
BTW,这类的Docker Repository设计理念有点像GitHub,GitHub中的Repository其实是”Project“,是供本地同名project push所用的仓库。
Docker Repository也是这样,以上新建的Repository严格说来并不是普通意义的”此用户在DockerHub上的库“,而是存储同名image的仓库。至于普通意义的用户仓库,就是DockerHub本身。。。就像GitHub本身就是代码托管库一样,用户注册了就自然拥有了”库空间“,create Repository只是新建”项目“而已。DockerHub亦然(从名字就一样的对吧。。)
push
原教程有点乱:为了完整走完”发现问题——解决问题“的流程,把坑也给踩了一遍,看似好像授reader以渔,但最终也没有给出出现问题的原因——docker push时需要遵循的命名规范。
这里给出我的教程:跟我学即可,无坑。然后再解释为什么
login
docker login -u YOUR_DOCKER_NAME -p YOUR_DOCKER_PWD
登录。
PS
docker login
或者
docker login -u YOUR_DOCKER_NAME
都可以登录(类似Mysql)。
登出:
docker logout
docker tag
docker tag LOCAL_IMAGE YOUR_DOCKER_NAME/REPO_NAME:tag
如我制作了:likethewind/whatever:tag2的镜像,具体可以docker images查看。
ps,关于docker tag:
解读:创建已有的镜像的副本,使用新的名字命名它
docker push
docker push YOUR_DOCKER_NAME/REPO_NAME:tag
即可推送。
如果DockerHub没有REPO_NAME对应的仓库,则push操作将会创建此仓库。
对于docker push的机制
从以上操作可以看到,docker tag时YOUR_DOCKER_NAME完全是多余的,肯定是推送到当前登录的账户(-u的值),这里不知道出于什么考虑。
这里给出”标准“push步骤:
用户likethewind在DockerHub上创建了名为test的仓库(Repository),现在本地想将名为myfirstimage:latest的镜像(同名,多个tag)上传至test仓库。则需要:
- 在本地创建likethewind/test镜像
docker tag myfirstimage:latest likethewind/test:latest
- push
docker push likethewind/test:latest
这里的镜像名一定要是
YOUR_DOCKER_NAME/REPO_NAME:tag
的形式,:tag可省(默认:latest)。官网也是这么要求的:
Pushing a Docker container image to Docker Hub