dockerfile案例

[toc]

自定义镜像mycentosjava8

要求

· 自定义镜像 mycentosjava8

· Centos7镜像具备 vim+ifconfig+jdk8

官网:

JDK的下载镜像地址:

下载地址:https://www.oracle.com/java/technologies/downloads/#java8open in new window

graphic

· 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 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

graphic

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录