前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布 Docker 镜像到 Dockhub 仓库

发布 Docker 镜像到 Dockhub 仓库

作者头像
角落的白板报
发布2020-06-05 10:37:52
3.4K0
发布2020-06-05 10:37:52
举报
文章被收录于专栏:角落的白板报

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

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

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

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

10

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

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

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

代码语言:javascript
复制

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

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

代码语言:javascript
复制

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

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

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

10

推送镜像到仓库

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

代码语言:javascript
复制

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

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

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

代码语言:javascript
复制
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标记,所以当我们去使用如下命令:

代码语言:javascript
复制
docker pull ltm0203/exampleapp

则会返回以下消息:

代码语言:javascript
复制
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 中。

请输入以下命令:

代码语言:javascript
复制

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

注销

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

代码语言:javascript
复制
docker logout

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

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

参考资料

[1]

复制文件到正在运行的Docker容器中: https://www.bilibili.com/video/BV1P5411s7GA/

[2]

Youtube: https://youtu.be/z9GajqkL-_0

[3]

将正在运行的容器保存为本地Docker镜像: https://www.bilibili.com/video/BV1Eg4y1B7md/

[4]

Youtube: https://youtu.be/sl0hJl7IKyI

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 角落的白板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为需要发布的项目打上标记
  • 推送镜像到仓库
  • 注销
    • 参考资料
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档