Docker学习(三)——dockerfile,容器的备份与迁移

一、Dockerfile

Dockerfile的本质就是由一系列顺序编排的命令和参数组成的脚本,并利用它把我们需要的应用制成一个镜像文件。

如下图所示,镜像与容器之间的关系:

前面我们都是直接通过docker pull镜像,然后docker run 的方式直接使用,而现实开发中,我们需要把我们自己的某个微服务模块制成镜像(images)文件,然后创建容器并启动,那么Dockerfile就要使用到了。

因为整个流程下来都是一样的构建环境和指令,因此使用Dockerfile有一下优势:


1、对于开发人员:可以为开发团队提供完全一致的开发环境;

2、对于测试人员:可以直接用开发所制成的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;

3、对于运维人员:在部署时,可以实现应用的无缝移植。

Dockerfile的常用命令如下:

 

二、下面以JDK为例,制作自己的镜像

1、在宿主机上创建目录

 mkdir -p /usr/local/docker_jdk

  

2、把jdk压缩包放入我们刚才创建的目录,可通过Xftp6从本地上传

3、创建Dockerfile文件(注意我们这里创建在和jdk压缩包同级目录,下面的命令中使用相对目录,当然,你也可以使用绝对路径找到jdk的压缩包。)

sudo vim Dockerfile

  如下图所示

 

4、下面就可以使用docker制作镜像了(确保自己的docker已经启动哦)

docker build-t='jdk1.8' .

注意:最后是有个“.”的,表示使用当前目录的Dockerfile构建;

-t参数表示制成的镜像名,可任意定义。

 查看镜像,

 可以看到,我们制作的jdk1.8镜像已经有了,同时下载了我们在Dockerfile文件第一行所依赖的centOS7镜像!

5、使用我们制成的镜像创建并运行容器

 进入该容器,并查看Java版本

 大功告成!这样,我们就可以在任意一台安装了docker的机器使用我们自制的jdk镜像创建运行容器咯!

三、容器的备份与迁移

1、将容器保存为镜像

docker commit 容器名 保存的镜像名

  

 可以看到my_jdk1.8_img是我们备份后得到的镜像,而jdk1.8是是我们通过Dockerfile制成的。

2、备份

docker save –o 打包的后的文件名.tar 镜像名

  

 如果遇到permission denied的错误,这是权限不够导致的,在命令前加sudo即可。

3、恢复

docker load –i 你的备份镜像tar包

  

参考https://mp.weixin.qq.com/s/5HK1khkGcTgsH8vKtrR4Pg

原文地址:https://www.cnblogs.com/zrs123/p/14107979.html