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

posted @ 2020-12-09 13:07  ruishu_0726  阅读(333)  评论(0编辑  收藏  举报