一、说明
本篇讲述如何将自己制作的容器转化成镜像,再将镜像推送到远端阿里云上。
二、制造一个本地容器
2.1 从远端仓库拉取ubuntu镜像
使用镜像拉取语句:
docker pull ubuntu:20.04
docker run -it ubuntu:20.04 bash
通过以上两句,产生本地出现ubuntu镜像,并执行此镜像的容器。尝试vim,发现vim没有安装,通过apt install vim在容器内部安装vim,尝试使用vim,使用正常。
docker ps
显示如下:
2.2 将本地容器转化成本地镜像
本地的容器通过commit语句提交产生本地镜像,注意和run语句是逆向操作。
语句如下:
docker commit -a "Mr smith" -m "ubuntu for me" c70c18ac0077 myubun:1.0
此处:作者smith,容器描述ubuntu for me。
查看本地镜像:
docker images
以上将自己制作的容器生成一个镜像。
三、如何将本地镜像推到阿里云上
关于阿里云服务,在文档【docker概念和实践 3】 注册阿里云账号、应用阿里云数据源中介绍了。因此,本节假定您已经拥有aliyun开发账号。
- 登录进入阿里云,
- 并采用以下操作:点菜单,找到容器镜像,点个人实例部分,如下图。
3.1 建立个人版的镜像仓库
执行指定代码,可以生成个人镜像仓库的阿里云平台
然后进入下面界面(无需填写)
然后进入下面界面:
点击建立命名空间:
创建镜像仓库名称:
3.2 自动生成操作脚本
此处由阿里云非常人性化地按照您的命名空间、仓库名,生成对应的操作语句,只要粘贴和少许修改,就可以操作,真可谓比help还管用的手册!
操作代码摘录如下:
1. 登录阿里云Docker Registry
$ docker login --username=gongdiwudu registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:[镜像版本号]
3. 将镜像推送到Registry
$ docker login --username=gongdiwudu registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
3.3 完成本地客户端推送任务
注意:我们以上操作建立了两个关键字( 将在本地链接用到):
- namespace:getgongdi
- 和仓库名称:myubuntu
将镜像推送到Registry,只要粘贴上文的代码,改变[]内内容,机械执行就OK了。
$ docker login --username=gongdiwudu registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:[镜像版本号]
以上三条命令将本地镜像推送到阿里云。
3.4 检查看阿里云平台:
重新登录到阿里云开发平台:
可以看到生成新的镜像内容,表明镜像推送成功。
3.5 尝试拉取以上创建的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/getgongdi/myubuntu:1.0
再次查看:docker images结果如下:
四、结论
通过本文大家应该了解到:本地镜像、本地仓库、阿里云仓库的用法;并且能够区分commit指令和push指令的区别和应用场景。