搭建了一个镜像后(例如搭建好了一个开发环境),如果想要供其他人使用,此时就可以发布镜像到镜像仓库。
本文就试着将本地的镜像,发布到阿里云。
发布流程
示意图:
首先 Images 可以由容器提交的方式生成,也可以通过 Dockerfile 的方式(后面会讲),然后通过 push 等操作提交到镜像仓库。(有点像 Git 里面的 git pull
和 git push
)
这个镜像仓库可以是公共的(类似 GitHub),也可以是私有的(例如公司内部搭建的,类似 GitLab)
这里我们以上一节提交的带 vim 的 Ubuntu 镜像为例,push 到阿里云仓库上
创建阿里云镜像仓库
登录阿里云控制台,然后选择容器镜像服务:
创建一个个人版的实例:
然后创建命名空间(类似 Java 中的包名,这里取名为 peterjxl):
创建仓库:先选择命名空间,然后点击创建镜像仓库
填写仓库的一些信息:
选择本地仓库,然后就创建成功了
创建成功后,会有操作指南(注意,每个人的命令都是不同的,要用自己的命令)
推送镜像
接下来就可以推送镜像了。注意:每个人的命令都是不同的,不要直接复制粘贴执行,得替换为自己的仓库的推送命令。
根据指南,推送镜像的命令如下:
$ docker login --username=peterjxl registry.cn-xxxxx.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:[镜像版本号]
先登录(注意要输入密码,之前创建的时候会设置),登录完后会出现 Login Succeeded 的提示,表示登录成功
然后设置一个 tag:
$ docker tag 0d0cf3b0417f registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:1.1
然后 push:
$ docker push registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:1.1
下载镜像
接下来我们就从阿里云仓库中,下载镜像到本地了。指南是这样写的:
- 登录阿里云 Docker Registry
$ docker login --username=peterjxl registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
- 从 Registry 中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:1.1
我们可以先删除本地所有镜像,然后再下载镜像,可以看到下载成功了:
$ docker rmi 0d0cf3b0417f
$ docker pull registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository:1.1$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/peterjxl/peterjxl_repository 1.1 0d0cf3b0417f 15 minutes ago 187MB
最后
课堂作业:使用 Centos 镜像,安装 vim 并提交到阿里云仓库