dockerfile案例
[toc]
自定义镜像mycentosjava8
要求
· 自定义镜像 mycentosjava8
· Centos7镜像具备 vim+ifconfig+jdk8
官网:
JDK的下载镜像地址:
下载地址:https://www.oracle.com/java/technologies/downloads/#java8
· https://mirrors.yangxingzhen.com/jdk/
wget https://mirrors.yangxingzhen.com/jdk/jdk-8u20-linux-x64.tar.gz
· 准备编写Dockerfile
文件
拉取镜像
docker run -d centos /bin/bash
docker ps
docker exec -it 7f569561ca8b /bin/bash
验证环境
mkdir /myfile
cd /myfile && mkdir Dockerfile
# root@ubuntu:/myfile# ls
# Dockerfile index.html jdk-8u171-linux-x64.tar.gz
# https://mirrors.yangxingzhen.com/jdk/jdk-8u171-linux-x64.tar.gz
构建一些增强型功能–编写dockerfile文件
from centos
MAINTAINER xiongxinwei<3293172751nss@gmail.com>
ENV mypath /usr/local
WORKDIR $mypath
# 安装vim
RUN yum -y install vim
# 安装ifconfig命令查看网络
RUN yum -y install net-tools
# 安装java8以及lib库
RUN mkdir /usr/local/java
# ADD 是把相对路径jar,把jdk添加到容器中,安装包必须要和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
注意:
大写字母D
构建
docker build -t 新镜像名字:TAG .
构建编写的dockerfile,生成新的镜像
vim Dockerfile
docker build -t centosjava8:1.5 .
公式:
docker build -f dockerfile文件 -t 新镜像名称:TAG .
⚠️⚠️⚠️注意,上面TAG后面有个空格,有个点
运行
docker run -it 新镜像名字:TAG
最后再体会下UnionFS(联合文件系统)
UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录