点击此处返回总目录

 

 

当我们使用docker build命令构建镜像的时候,需要用到Dockerfile文件。

 

 

一、Dockerfile简介

为什么要用Dockerfile构建镜像呢?

       比如开发人员制作了一个镜像:首先从网上下一个镜像1,然后建立容器,再在里面一通安装、配置,最后把容器保存成一个镜像2。如果测试人员要使用镜像2,怎么办呢?一种方法是直接去找开发拷贝镜像2,另一种方法就是也下载镜像1,然后做同样的操作,得到镜像2。

 

其实我也没想明白为什么大家不都用第一种方法,我们暂且认为开发人员在美国,测试人员在中国,而且镜像是涉密的,不能通过互联网考。所以,现在现在只能用第二种方法了。

但是第二种方法很痛苦啊,又要装一遍,而且我咋知道你开发怎么装的,万一我装哪个库版本不对,找谁去。。

经过双方争吵之后,达成协议:开发人员把步骤一步一步的写在了小本本上,然后把小本本给测试人员,这样测试人员就可以按照小本本的操作一步一步做了。

过了一段时间,发现小本本不好用啊,开发写的步骤的格式也不统一,乱七八糟的,越来越不像话了。而且,我还得按步骤一遍一遍装,装一遍一天就没了。这时候又去吵了一架,达成协议:把小本本格式规范一下,而且拿到之后用脚本就可以自己装,这样多方便。这个小本本就是:Dockerfile。

 

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于一个基础镜像并最终创建一个新的镜像。

 

二、Dockerfile常用命令

1. FROM 基础镜像                              //从哪个基础镜像构建新镜像。如果本地不存在,会先从网上下载。

2. MAINTAINER liupc                         //版权声明。

3. ENV 键 值                                       //设置环境变量。

4. RUN 命令                                       //运行命令。

5. ADD aaa.txt /usr/local                     //文件拷贝。如果是压缩文件,复制后会自动解压。

    COPY aaa.txt /usr/local                  //文件拷贝。如果是压缩文件,复制后不会解压。

6. WORKDIR path_dir                        //设置工作目录

 

 

三、举例:构建jdk1.8镜像

 

1. mkdir /usr/local/dockerjdk8         //创建目录的目的是,在这个目录下构建Dockerfile文件。

 

2. mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8      //把需要的压缩文档考到过来。

 

3. cd /usr/local/dockerjdk8

    vim Dockerfile,内容如下:

    

dockerfile 安装express dockerfile 安装tar_Dockerfile

    

    保存。可以看到:

    

dockerfile 安装express dockerfile 安装tar_docker_02

 

4. docker build -t='jdk1.8' .

 

dockerfile 安装express dockerfile 安装tar_Dockerfile_03

 

 输入docker images,可以看到已经有了镜像:

dockerfile 安装express dockerfile 安装tar_docker_04