标记本地镜像并上传到镜像库中

1,259 阅读4分钟

在之前的文章中我们介绍了docker相关的基础知识,并成功的创建了相关应用程序的镜像(image),同时可以基于相应的镜像(image)来运行一个container实例。docker的镜像有一个可移植的特性,可移植表示我们可以在其他地方运行它,本篇文章我们主要介绍如何对本地镜像进行标记,并上传到Docker公共镜像库中。

在实际操作之前先让我们了解一些基础概念:

镜像库:镜像库是镜像仓库的集合,Docker Hub为我们提供了公用的镜像库,大家可以把镜像库理解成我们的SVN或者Github。

镜像仓库:镜像库中包含的是镜像仓库,而镜像仓库是镜像的集合,类似于GitHub镜像仓库或者SVN仓库。

镜像库中的一个账号可以创建很多镜像仓库,默认情况下,docker CLI使用docker公用的镜像仓库。本篇文章我们主要是讲解如何将本地镜像上传到Docker的公用镜像库中,因为它是免费的并且已经预先进行了配置,且提供了很多公用镜像可供使用,当然我们也可以设置自己的专用镜像库,以后会专门做一个专题为大家介绍如何创建自己的专用镜像库。

在使用Docker公用镜像库之前我们需要先创建一个Docker ID账号,并在当前账号下创建一个自己的镜像仓库,大家可以登录到如下地址进行创建:cloud.docker.com

标记镜像

首先我们先执行docker images指令查看本地镜像有哪些,如图所示,本地有一个名为netcorelinux:v1的镜像:


通过指令docker tag local-image-name douckerId/repository:tag 来对本地镜像进行标记,该命令中tag后面的local-image-name表示的是本地要被标记的镜像的名称 ,后面跟着的dockerId表示在docker hub中注册的账户,repository表示创建的镜像仓库的名称,冒号后面的tag用来标记该镜像在镜像仓库中的名称,如:

docker tag netcorelinux test/hello-repo:hellonetcorelinux, 该指令的意思是将本地镜像netcorelinux标记到test下的hello-repo镜像仓库中,并以hellonetcorelinux进行标记(命名)

执行之后我们再通过docker images指令来查看,如图所示:


 可以看到我们标记的hellonetcorelinux,接下来我们就要发布我们标记的镜像到我的镜像仓库中。

发布镜像

通过指令docker push dockerId/repository:tag来将我们标记的镜像发布到镜像仓库中,如

docker push test/hello-repo:hellonetcorelinux 该指令的意思是将标记好的名为hellonetcorelinux镜像上传到test下的hello-repo镜像仓库中,执行结果如图所示:


我们可以访问cloud.docker.com 站点查看发布到Docker公共镜像库中的镜像,如下图所示:



从Docker公共镜像仓库中拉取镜像并运行

我们已经将本地镜像发布到了公用镜像库中,这样我们就可以在其他环境中拉取镜像并运行镜像了我们可以通过如下指令从Docker公用镜像库中拉取并运行镜像:docker run -d -p 8000:80 --name container-name dockerId/repository:tag,如:

docker run -d -p 5000:80 fromdockerhub test/hello-repo:hellonetcorelinux 该指令表示的意思是基于test下的hello-repo镜像仓库中的hellonetcorelinux镜像创建一个名为fromdockerhub的容器实例并运行,将容器的80端口与主机的5000端口进行映射,执行结果如图所示:


我们可以通过指令docker ps -a 查看当前机器上的容器情况,如图所示:


通过浏览器访问:http://localhost:5000, 我们的应用已经成功运行了起来,如图所示:



注意:不同类型container下build出来的image只能在所对应的类型的container下运行,比如不能在windows container中运行linux container build出来的image,否则会出现error: operating system "windows" cannot be used on this platform 或者error: operating system "Linux" cannot be used on this platform

以上我们便完成了如何标记本地镜像并上传到公共镜像仓库中的介绍,希望对大家的学习能有所帮助,有任何问题都可以给我留言。


上一篇(Docker 容器中运行.net core应用程序)

下一篇(Docker Compose简介)