一、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