发布Docker镜像到Dockhub容器仓库

Author Image
admin Wednesday, May 13, 2020 阅读数: 125

[YoYoMooc]发布Docker镜像到Dockhub仓库

推荐内容:

  1. 复制文件到正在运行的Docker容器中|Youtube(需科学上网)
  2. 将正在运行的容器保存为本地Docker镜像|Youtube(需科学上网)

我们已经在本地建立了一个镜像,并且这个镜像已经通过了我们的测试,现在我们就可以将它发布到我们的服务器上,而要发布到服务器上创建容器就需要一个存储这些镜像的地方。

而Docker公司就提供了一个存放公共镜像存储的地方就是DockerHub。当然你如果要存放私有的镜像,则需要私有仓库,DockerHub默认提供了一个私有仓库,你如果需要更多的私有仓库则需要付费。

注意,请自行前往https://hub.docker.com/注册自己的账户。

完成注册后你会得到一个唯一的用户名称,如ltm0203,参考下图:

10

为需要发布的项目打上标记

在本文中我会打上一个ltm0203/exampleApp3000的镜像标记,将它发布到Docker Hub中。你可以自由选择你是发布为私有仓库还是公有仓库。

为了对比方便,我们再制作一个未修改的镜像一共发布到Docker仓库中,请注入以下命令:


docker tag yoyomooc/exampleapp:latest ltm0203/exampleapp:unchange

可以通过docker image ls,验证生成的镜像,我只选择了需要发布的镜像,你的显示出的镜像会比这个多一些。

REPOSITORY TAG IMAGE ID CREATED SIZE
ltm0203/exampleapp changed 172ebd0eedc7 6 hours ago 285MB
ltm0203/exampleapp unchange a49000cfa42e 23 hours ago 234MB

现在打开终端控制台,注入以下命令:


docker login -u <用户名> -p <密码>

我们需要在控制台中登录你DockerHub的用户名和密码,所以请将<>中的字符替换为你自己注册的用户名和密码。

登录成功后会返回,登录成功的英文内容。

10

推送镜像到仓库

现在我们就可以通过命令推送到DockerHub仓库中,输入以下命令:


docker push ltm0203/exampleapp:changed
docker push ltm0203/exampleapp:unchange

10 推送成功后,返回如上图 的结果。

同时我们可以看到在推送ltm0203/exampleapp:unchange镜像的时候,返回的文字中除了有Pushed以外还有 Layer already exists ,提示已经存在,这说明docker会检查当前仓库中是否有相同的内容,如果有的话会引用它们。

The push refers to repository [docker.io/ltm0203/exampleapp]
b719af2a02d9: Layer already xists                                                                                                                                                                         4de7fcec79e4: Layer already exists                                                                                                                                                                         b4f12c28bcb9: Layer already exists                                                                                                                                                                         4be6dadfbd3f: Layer already exists                                                                                                                                                                         b50dd2025901: Layer already exists                                                                                                                                                                         c3a984abe8a8: Layer already exists                                                                                                                                                                         unchange: digest: sha256:c995199b726c31b1eed0966fee9953b8c7f64d37a834935ee7a401b14062ba19 size: 1586      

你可以登录https://hub.docker.com/repository/docker/ltm0203/exampleapp地址进行验证,得到如下的结果,镜像已经成功推送。

10

在之前的章节中,我们提到过使用docker pull 命令的时候,会默认去拉取latest的内容,而当前我们的仓库中不存在latest标记,所以当我们去使用如下命令:

docker pull ltm0203/exampleapp

则会返回以下消息:

Using default tag: latest
Error response from daemon: manifest for ltm0203/exampleapp:latest not found: manifest unknown: manifest unknown

并不存在latest标记的ltm0203/exampleapp镜像,所以为了避免这种尴尬,我们需要推送一个ltm0203/exampleapp:latest标记的镜像到DockerHub中。

请输入以下命令:


docker tag yoyomooc/exampleapp:latest ltm0203/exampleapp:latest
docker push ltm0203/exampleapp:latest

注销

当我们使用完成后登陆docker的用户会常驻在我们的系统中,所以我们需要使用

docker logout

注销我们当前的登陆信息。

以上便是docker的基础操作流程了。如果你对这些命令还不熟悉,还请多加练习。掌握他们。