上一节我们学习了如何创建一个新的镜像,现在来学习如何发布这个镜像到镜像仓库。
到目前为止,前面创建的镜像只存在于我们自己的电脑上。如果想要它可以在任何机器上都能运行的话,还需要将其推送到镜像仓库。本文不会介绍如何构建一个私有镜像仓库,这个知识点在后面学习到。
这里我们使用阿里云的镜像仓库进行演示,当然你也可以将镜像推送到Docker Hub(hub.docker.com/)。
1.创建个人镜像仓库
创建命名空间
首先进入阿里云的容器镜像服务页面
创建镜像仓库
管理镜像仓库
选择“管理”链接,跳转到如下页面:
可以看到阿里云已经为我们生成好了推送镜像的命令:
$ sudo docker login --username=david**** registry.cn-shanghai.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/david-ns01/test1:[镜像版本号]
$ sudo docker push registry.cn-shanghai.aliyuncs.com/david-ns01/test1:[镜像版本号]
2.推送镜像
现在将我们之前制作好的test1:latest镜像推送到镜像仓库
添加标签
先按阿里云的规范给test1:latest镜像添加一个新的tag:
sudo docker tag test1 registry.cn-shanghai.aliyuncs.com/david-ns01/test1:1.0
该命令会给同一个镜像再创建一个标签。通过docker images命令可以看到test1和registry.cn-shanghai.aliyuncs.com/david-ns01/test1两个标签指向的是同一个镜像ID。
登录镜像仓库
如果镜像仓库不是公开的话,还得先登录
sudo docker login --username=david*** registry.cn-shanghai.aliyuncs.com
推送镜像
sudo docker push registry.cn-shanghai.aliyuncs.com/david-ns01/test1:1.0
至此,我们已经成功的将一个镜像推送到仓库中,可以在如下页面看到刚刚推送的镜像:
推送成功后,这个镜像就可以被任何人使用了。以后应用每次都会运行在相同的环境中。如果在你的本机上能正常运行,那么在其他Linux机器上也能正常运行。完全不用担心宿主机是否安装了Node.js。事实上,即使安装了Node.js,应用程序也不会用到它,因为应用程序使用的是镜像里安装的Node.js。