在上一篇文章中《Dockerfile介绍及常用保留指令》,我们介绍了Dockerfile是什么以及Dockerfile常用的保留字段。熟悉了这些之后,有没有想自己动手写一个Dockerfile呢?本文咱们就实战自己Dockerfile。
案例需求:
我们以远程仓库的centos为模板,制作出代用vim\ifconfig\java8这样的镜像
jdk镜像地址:https://mirrors.yangxingzhen.com/jdk/
编写:
然后将下载的jdk-8u171-linux-x64.tar.gz复制到myfile文件夹下
编写Dockerfile:
FROM centos:7 MAINTAINER kaigejava ENV MYPATH /usr/local WORKDIR $MYPATH #安装vim编辑器 RUN yum -y install vim #安装ifconfig命令查看网络IP RUN yum -y install net-tools #安装java8及lib库 RUN yum -y install glibc.i686 RUN mkdir /usr/local/java #ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置 ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ #配置java环境变量 ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 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 EXPOSE 80 CMD echo $MYPATH CMD echo "success--------------ok" CMD /bin/bash
说明:
ENV:用来构建镜像过程中的环境变量。其中环境变量命中是:MYPATH 值为:/usr/local
RUN:容器构建时候需要运行的命令。上面文件使用的是shell命令格式的。
ADD:将宿主机目录下的文件拷贝到镜像中会自动处理url和解压tar压缩包。
上文中的:ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ 命令实际上就是将宿主机中的/myfile/ jdk-8u171-linux-x64.tar.gz 这个文件拷贝并解药到 /usr/local/java文件夹下 。
可以将构建镜像所需要的所有文件,都放到和Dockerfile同一个目录中,这样在ADD的时候,不用可以直接文件名,相对路径就可以。可以避免,全路径拼写错误导致不必要的麻烦
CMD echo 输入变量MYPATH的值;输出usccess---ok。执行/bin/bas 伪终端
构建
实例套用命令公式:
docker build -t centosjava8:1.5 .
可以看到17步骤
说明执行成了。
可以发现正常。
运行
我们运行自己制作的镜像。看看vim/ifconfig/java -verson是否都正常
docker run -it 8f844c2c3091 /bin/bash
/usr/local
这个路径就是我们上文,编写Dockerfile时候指定的WORKDIR 路径
正常。
jdk也正常。这样,我们就制作了一个包含了vim/ifconfig/jdk.18的镜像。