在以前的文章中咱们介绍了docker相关的基础知识,并成功的建立了相关应用程序的镜像(image),同时能够基于相应的镜像(image)来运行一个container实例。docker的镜像有一个可移植的特性,可移植表示咱们能够在其余地方运行它,本篇文章咱们主要介绍如何对本地镜像进行标记,并上传到Docker公共镜像库中。linux
在实际操做以前先让咱们了解一些基础概念:docker
镜像库:镜像库是镜像仓库的集合,Docker Hub为咱们提供了公用的镜像库,你们能够把镜像库理解成咱们的SVN或者Github。windows
镜像仓库:镜像库中包含的是镜像仓库,而镜像仓库是镜像的集合,相似于GitHub镜像仓库或者SVN仓库。浏览器
镜像库中的一个帐号能够建立不少镜像仓库,默认状况下,docker CLI使用docker公用的镜像仓库。本篇文章咱们主要是讲解如何将本地镜像上传到Docker的公用镜像库中,由于它是免费的而且已经预先进行了配置,且提供了不少公用镜像可供使用,固然咱们也能够设置本身的专用镜像库,之后会专门作一个专题为你们介绍如何建立本身的专用镜像库。post
在使用Docker公用镜像库以前咱们须要先建立一个Docker ID帐号,并在当前帐号下建立一个本身的镜像仓库,你们能够登陆到以下地址进行建立:cloud.docker.com学习
首先咱们先执行docker images指令查看本地镜像有哪些,如图所示,本地有一个名为netcorelinux:v1的镜像:ui
经过指令docker tag local-image-name douckerId/repository:tag 来对本地镜像进行标记,该命令中tag后面的local-image-name表示的是本地要被标记的镜像的名称 ,后面跟着的dockerId表示在docker hub中注册的帐户,repository表示建立的镜像仓库的名称,冒号后面的tag用来标记该镜像在镜像仓库中的名称,如:this
docker tag netcorelinux test/hello-repo:hellonetcorelinux, 该指令的意思是将本地镜像netcorelinux标记到test下的hello-repo镜像仓库中,并以hellonetcorelinux进行标记(命名).net
执行以后咱们再经过docker images指令来查看,如图所示:3d
能够看到咱们标记的hellonetcorelinux,接下来咱们就要发布咱们标记的镜像到个人镜像仓库中。
经过指令docker push dockerId/repository:tag来将咱们标记的镜像发布到镜像仓库中,如
docker push test/hello-repo:hellonetcorelinux 该指令的意思是将标记好的名为hellonetcorelinux镜像上传到test下的hello-repo镜像仓库中,执行结果如图所示:
咱们能够访问cloud.docker.com 站点查看发布到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
以上咱们便完成了如何标记本地镜像并上传到公共镜像仓库中的介绍,但愿对你们的学习能有所帮助,有任何问题均可以给我留言。