6. Dockerfile
点击此处返回总目录
当我们使用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,内容如下:
保存。可以看到:
4. docker build -t='jdk1.8' .
输入docker images,可以看到已经有了镜像:
|