最近在学习Docker,从安装Docker开始,到自定义制作镜像mycentos,但是怎么把它推送到阿里云,一直是困扰我的问题。后面有时间了解了一下,根据本地镜像推动到阿里云其实并没有我们想象中那么难。

前提条件:

  已经生成一个镜像,镜像生成的方法,可以参考另外一篇博文:

 

  已经生产一个镜像后,现在要做的事就是把本地镜像推送到阿里云上(目前我使用的是阿里云的仓库)

 

1、从本地镜像推送到阿里云上,需要知道几个网址


2、为什么要知道这2个网址:

  A 阿里云开发者平台:找到对应的”命名空间/镜像名称”,就是push到阿里云上的镜像。当然,也可以去搜索其他你所需要的镜像。

  B 阿里云官网:找到容器镜像服务,步骤:阿里云->控制台-> 产品与服务->弹性计算->容器镜像服务,可以创建镜像仓库、命名空间等。

 

3、实战-本地镜像推送阿里云

3.1 打开虚拟机centos7终端,执行docker images出现错误:【Failed to restart dock.service: Unit not found.】,执行如下代码:



systemctl unmask docker.service

systemctl unmask docker.socket

systemctl start docker.service



 

3.2 镜像的生成方法


a 打开终端,输入命令 docker image 查看mycentos:1.3的容器ID

 



docker images

docker run -it 镜像id //找到mycentos:1.3的镜像id,此时已经开启一个容器

//只要容器不退出,另外再打开一个终端,把mycentos:1.3复制一份生成mycentos:1.4上传到阿里云

输入如下命令:

docker ps  //查看运行中的容器

docker commit -a 命名空间 -m “注释内容” 容器id(container id) 镜像名称(image id):TAG

//镜像名称(image id):TAG是最新提交的TAG和镜像名称 ,比如mycentos:1.4

//容器id是根据docker ps查看,找到对应的容器id



 

 

 3.3 将本地镜像登录到阿里云

在阿里云平台,需要做如下3步:

  a 创建命名空间,比如abc

  b建立仓库名称,比如def

  c 建立的镜像仓库->找到对应的仓库,选择def->点击操作栏管理->基本信息->操作指南,找到第三个步骤,将镜像推送到Registry,把这3条命令在linux终端系统输入,对应的imageid、镜像版本号进行修改,执行命令如下:



$ sudo docker login --username=xxx registry.cn-hangzhou.aliyuncs.com

//xxx是阿里云的账户名称

$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/abc/mycentos:[镜像版本号]

//abc是命名空间,[ImageId]是步骤3.2中的镜像id

//mycentos:[镜像版本号]是提交到阿里云上的名称和TAG,比如这里是mycentos:1.4.1

$ sudo docker push registry.cn-hangzhou.aliyuncs.com/abc/mycentos:[镜像版本号]

//abc是命名空间,mycentos:[镜像版本号]与上一步命令保持一致



做完这一步,表示已经从成功从本地上传到阿里云了,可以去阿里云开发者平台搜索abc/mycentos:1.4.1,就能找到你上传上去的镜像:

https://dev.aliyun.com/search.html

  

3.4 将阿里云上的镜像下载到本地

  现在想把开发者平台中的镜像,拉取到本地,比如:mycentos:1.4.1

执行如下命令,就可以把阿里云开发者平台中的镜像拉取到本地:

docker pull registry.cn-hangzhou.aliyuncs.com/abc/mycentos:1.4.1 //abc是命名空间