[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库

如果你学习了前面的的三篇文章:

[1] 外行人都能看的懂的Docker简介
[2] 一篇文章带你入门Docker
[3] docker应用部署实战(MySQL、Tomcat、Redis、RabbitMQ)

那恭喜你,你现在已经可以将自己的应用程序+运行环境打包好放到docker里了。然而,做到这一步显然还不够。你需要将你的docker镜像对外提供出去,这样才能放到其他主机上去跑。本节我们就来实战一下将容器打包成Docker镜像,并提供对外拷贝的.tar包或将其直接发布到阿里云仓库。

1.容器保存为镜像

命令:

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

解释:

-m= : 为镜像添加描述信息
-a= : 为镜像添加创建者信息
容器名称|容器ID : 当前要被打包的容器名称或容器ID
生成的镜像名[:标签名] : 指定镜像名称或标签名称

1.1 创建测试容器

创建并进入容器

docker run -it --name=my_ubuntu  ubuntu /bin/bash

随便增加一些文件
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第1张图片

2.2 将该容器打包成镜像

1.首先退出容器
在这里插入图片描述
2.执行打包命令
在这里插入图片描述
在这里需要强调一点:镜像名必须要全部小写,否则将不能打包。
在这里插入图片描述
3. 查看镜像列表
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第2张图片

2.3 运行容器

运行容器验证一下:
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第3张图片

2.4 对有目录/文件映射的容器的处理

针对映射了宿主机的文件/目录的容器,在打包成镜像时,映射文件/目录并不会被打包进去。
针对这种情况提供两种解决方案:

1.直接将原来的映射目录/文件拷贝进容器后再打包。

docker cp 要拷贝的文件或目录 容器ID或容器名称:要拷贝到的容器内部位置

2.对外提供镜像时,把映射文件一起提供出去。当运行镜像时,指定映射关系。

2.将镜像备份成.tar文件

命令

docker save -o 保存的PathName 镜像名:标签

将镜像打包,并保存在当前目录下:
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第4张图片

3. 从.tar文件恢复

1.先删除原有的my_ubuntu:1.0镜像
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第5张图片
2.恢复镜像

命令

docker load -i 镜像备份文件

实操
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第6张图片

4. 上传到阿里云仓库

4.1 进入阿里云控制台

进入阿里云控制台,找到容器镜像服务,并点击进去。

初次进入需要设置远程仓库密码
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第7张图片
设置密码
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第8张图片

4.2 创建镜像仓库

[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第9张图片
选择本地仓库
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第10张图片

4.3 查看操作指南

[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第11张图片
具体说明
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第12张图片

4.4 实操将镜像提交到阿里云

[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第13张图片
docker tag的目的是:标记此镜像为阿里云仓库的镜像

4.5 实操从云仓库拉取镜像

先删除原有镜像
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第14张图片
拉取镜像
[4] docker容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库_第15张图片
运行镜像
在这里插入图片描述

你可能感兴趣的:(Docker)