思考:假设我们要部署一套环境,多个机房部署,你会怎么做?一个一个远程安装jdk,mysql,redis等等。。好麻烦是不是?那DockerFile就帮你解决了这个问题。
一、初步了解DockerFile
DockerFile的作用就是将你需要的所有的镜像打包成一个DockerFile制作成一个全新的镜像(就是对镜像的定制),这个镜像里有可能有配置好的redis和mysql的集群,nginx和tomcat等等。多机房部署只需要运行这个镜像就好了。
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
二、实践操作
还是用我们上一章的项目查看上一篇文章,我们要把war包和tomcat打包成一个镜像。
①首先我们先创建一个DockerFile
vi Dockerfile
嗯,这样一个DockerFile就创建完了....当然我们要写点东西。
嗯。。就这两行。因为我们下载好的tomcat里已经有jdk环境变量了,所以不用配置。我们要做的就是把tomcat镜像拉下来,然后复制我们的war包到镜像里的目录中。
②接下来我们构建一下。
docker build -t "diy_tomcat:v1" .
docker images 我们的镜像已经在仓库中了。
我们现在进这个diy_tomcat中看看我们的war包是否在里边。
③启动镜像
我们之前启动tomcat还要挂载war包,我们现在把war包和tomcat搞到了一起,制作了一个新的镜像,就不要挂载了 不过--link还是不能少的。
docker run --name docker_diy_tomcat -p 8082:8080 -d --link docker_redis:docker_redis--link docker_mysql:docker_mysql c79901aa11f0
我们成功起来了,下面我们进入这个容器中看看war包是否真的存在呢?
④进入容器
docker exec -it docker_diy_tomcat bash
看来确实存在的。
那我们测试来看看
是的我们成功了。