目录
1. 将需要的用到的资源(jdk-8u211-linux-x64.tar.gz)准备好,创建一个文本文件名称为Dockerfile(命令:touch Dockerfile)
3.使用 Dockerfile 构建名为my-jdk:8的镜像(在Dockerfile所在目录执行)
前言
如果您对dockers基础不熟悉,可以先跟着(docker安装及应用)这篇文章。
一、Dockerfile文件
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
二、跟做先构建个简单的镜像感受一下
1. 将需要的用到的资源(jdk-8u211-linux-x64.tar.gz)准备好,创建一个文本文件名称为Dockerfile(命令:touch Dockerfile)
2.vi命令编辑Dockerfile ,粘贴下面内容
FROM centos
MAINTAINER zengLingYao
RUN mkdir /usr/local/java
ADD jdk-8u211-linux-x64.tar.gz /usr/local/java/
RUN ln -s /usr/local/java/jdk1.8.0_211 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
3.使用 Dockerfile 构建名为my-jdk:8的镜像(在Dockerfile所在目录执行)
docker build -t my-jdk:8 .
生成镜像后我们可以通过docker images命令看到自己构建的镜像
4.镜像的导出与导入
导出命令:docker save my-jdk:8 | gzip > my-jdk:8.tar.gz
导入命令:docker load < my-jdk:8.tar.gz
三、Dockerfile文件指令
FROM
FROM用于指定基础镜像,且必须为第一个命令
例1:FROM centos 最新版本
例2:FROM centos:7 指定版本
MAINTAINER
Dockerfile作者信息,一般写的是联系方式
例:MAINTAINER 3198215426@qq.com
RUN
用于执行后面跟着Linux系统命令的命令
例:RUN yum -y install wget
COPY
从上下文目录中复制文件或者目录到容器里指定的绝对路径
例: COPY test /user/local/docker
ADD
对压缩文件进行解压缩;将数据移动到指定的目录
例: ADD jdk-8u211-linux-x64.tar.gz /user/local/docker
CMD
在docker run 时运行
例:CMD ["/bin/echo", "this is a echo test"]
ENV
环境变量
例1:ENV <key> <value>
例2:ENV <key1>=<value1> <key2>=<value2>...
VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
例1:VOLUME ["/data",...]
例2:VOLUME /data
四、注意事项
Dockerfile 的指令每执行一次都会在 docker 上新建一层。
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
#会建3层镜像应改为下面写法只建1层
FROM centos
RUN yum -y install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz
使用ADD/COPY命令,资源文件必须和Dockfile位于同一目录下