※1、Dockerfile理念运用
dockerfile就是一个文本文件 包含了一条条的指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
为开发、测试。运维提供完全一致的开发环境 只需要通过一个dockerfile文件构建出相同的镜像
---
当然dockerfile所运用的到命令都是从简起,通俗说法就是构建时一条命令就是一层包围,镜像讲究的是不破坏原有的环境,尽可能减少构建的层数,一个dockerfile所包含的命令为如下:
FROM 指定父镜像 基于哪个镜像image构建
RUN 容器创建的时候执行一段命令
CMD 容器启动的时候执行的命令
COPY 创建容器是复制文件到镜像
ADD 添加文件到镜像还会自动解压 还可以添加远程的
ENV 设置环境变量 启动容器时 -e参数可以覆盖ENV设置的环境变量
VOIUME 启动容器时挂载目录到容器里面
EXPOSE 暴露端口
WORKDIR 设置进入容器时的路径
---
标准的镜像构建需要指定一个文件夹包含一个构建项目所需的应用包,以及一个Dockerfile,当执行构建时,需要确认构建目录无其他无关联文件,这样可以加快构建镜像时的空间计算(计算的方式为统计当前目录下所有文件的大小,在执行Dockerfile文件构建的步骤),或者如下演示文件排除文件或者文件夹(需要在有Dockerfile构建文件的目录下才生效)
echo "111.zip
1.sh
20210824_apache-tomcat-9.0.35
20210824_Dockerfile
apache-tomcat-9.0.35.tar.gz" > .dockerignore
---
※2、Dockerfile配置基础环境模板(演示tomcat容器制作)
FROM centos:7.9.2009
RUN mkdir -p /usr/java && mkdir -p /usr/local/tomcat
ADD jdk-8u251-linux-x64.tar.gz /usr/java/
ADD apache-tomcat-9.0.35 /usr/local/tomcat/
ENV JAVA_HOME=/usr/java/jdk1.8.0_251 \
PATH=$JAVA_HOME/bin:$PATH \
CLASSPATH=.:$JAVA_HOME/lib \
TZ=Asia/Shanghai \
JAVA_OPTS="\
-Xmx4096m \
-Xms4096m \
-Xmn1024m \
-XX:+AggressiveOpts \
-XX:+UseBiasedLocking \
-XX:MaxTenuringThreshold=15 \
-XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC \
-XX:+CMSParallelRemarkEnabled \
-XX:+UseCMSCompactAtFullCollection \
-XX:LargePageSizeInBytes=128m \
-XX:+UseFastAccessorMethods \
-XX:+UseCMSInitiatingOccupancyOnly \
-Djava.awt.headless=true \
-Djava.security.egd=file:/dev/./urandom"
RUN chmod +x /usr/local/tomcat/bin/startup.sh && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone &&yum -y install unzip net-tools telnet vim tcpdump mtr rsync sysstat tree zip epel-release lsof iostat && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out
参考文献:
https://www.cnblogs.com/yanh0606/p/11360936.html #dockerfile 命令的详细介绍
https://blog.csdn.net/qq_39615245/article/details/82711153 #dockerfile镜像制作并测试