通过 Dockerfile 可以实现自己开发一个镜像。

Dockerfile 其实就是一个文本文件,由一系列命令和参数构成,Docker 可以读取 Dockerfile 文件并根据 Dockerfile 文件的描述来构建镜像。

常用命令

命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是 Dockerfile 的核心部分(可以写多条)
ADD source_dir/file dest_dir/file将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file和 ADD 相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录

使用脚本创建镜像

测试:使用脚本来创建 jdk1.8 镜像

1、创建目录

1
mkdir –p /usr/local/dockerjdk8

2、下载 Linux 版本的 jdk1.8(jdk-8u291-linux-x64.tar),并上传到服务器(虚拟机)中的/usr/local/dockerjdk8 目录

下载地址:jdk1.8 下载

3、在/usr/local/dockerjdk8 目录下面创建文件 Dockerfile vi Dockerfile

1
vi Dockerfile

编辑内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER shiguang
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u291-linux-x64.tar.gz /usr/local/java/

#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_291
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

4、执行命令构建镜像(注意后边的空格和点,不要省略)

指令最后一个 . 是上下文路径。上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。(因此不要在构建镜像的时候上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢)

docker build -t=’镜像名’ .

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