想把镜像传到阿里云,先要创建一个镜像。可以使用Dockerfile创建,也可以使用正在运行的容器docker commit 之后创建。命令格式如下:
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
例如:
docker commit -a wk -m 'test image' 容器ID mycentos:1.2
OPTIONS说明:
-a :提交的镜像作者。
-m :提交时的说明文字。
mycentos:1.2 表示新镜像的 REPOSITORY 是mycentos;TAG是1.2。这里我有一个本地的镜像mycentos:1.2,如下:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.2 737ea05543bb 3 days ago 414MB
2. 将镜像推送到阿里云。
- 创建命名空间:首先登陆阿里云(用支付宝、淘宝都可以登陆),在控制台找到“容器镜像服务”,然后在“命名空间”-->"创建命名空间"。创建完成。这里我的命名空间叫做wkun。
- 创建镜像仓库:在“镜像仓库”-->“创建镜像仓库”。注意最后要选择“本地仓库”。
这里我创建的镜像仓库名字叫做mycentos。鼠标放到下载的图标上可以看到这个镜像的仓库地址。
- 将镜像推送到阿里云Registry。
下面的命令是从阿里云刚刚创建的镜像仓库mycentos,点击“管理”。可以看到将镜像推送到阿里云的命令:
$ sudo docker login --username=349140408@qq.com registry.cn-beijing.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/wkun/mycentos:[镜像版本号]
$ sudo docker push registry.cn-beijing.aliyuncs.com/wkun/mycentos:[镜像版本号]
执行第一条命令后输入密码。这个密码不是阿里云的登录密码,是阿里云镜像仓库的密码。最开始使用阿里云这个“容器镜像服务”的时候会提示设置。这个相当于登录阿里云docker的Registry。
执行第二条命令如下:我本地的mycentos镜像版本是1.2,我故意把这个新的镜像版本设置为1.5。实际上docker tag命令就是创建一个新的镜像,并且设置新镜像的名字和TAG。
[root@localhost ~]# sudo docker tag 737ea05543bb registry.cn-beijing.aliyuncs.com/wkun/mycentos:1.5
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 1.2 737ea05543bb 3 days ago 414MB
registry.cn-beijing.aliyuncs.com/wkun/mycentos 1.5 737ea05543bb 3 days ago 414MB
- 执行第三条命令:推送新的镜像到它的地址。
sudo docker push registry.cn-beijing.aliyuncs.com/wkun/mycentos:1.5
执行完成后,可以在阿里云我们刚创建的mycentos-->管理-->镜像版本。看到刚刚推送的镜像。
如果创建的镜像仓库mycentos是公开的不是私有的,那可以在“镜像库”-->“镜像搜索” 输入wkun/mycentos搜索到。
- 拉取刚刚发布的镜像。
把本机的registry.cn-beijing.aliyuncs.com/wkun/mycentos:1.5 镜像删除掉。然后使用命令:
docker pull registry.cn-beijing.aliyuncs.com/wkun/mycentos:1.5
能拉取下来,证明发布成功。