Deckerfile

1.简介
  • dockerfile 是 docker 镜像构建文件。
  • 包含用于构建 docker 镜像的指令和配置。
  • 通过Dockerfile可以自动化地构建Docker镜像,实现快速、一致和可重复的部署。
  • 是由一条条构建镜像所需的指令和参数构成的脚本。
  • 指令按照从上到下,顺序执行,每条指令都会创建一个新的镜像层并对镜像进行提交。
2.构建过程
  • docker从基础镜像运行一个容器。
  • 按顺序执行到某一条指令并对容器做成修改。
  • 执行类commit的操作提交一个新的镜像层。
  • docker再基于刚提交的镜像运行一个新容器。
  • 以此类推直到所有指令都执行。
3.Dockerfile、Docker镜像与Docker容器
  • Dockerfile是一个文本文件,包含了一系列的命令和指令,用于描述如何构建一个Docker镜像。

  • Docker镜像是一个只读的模板,包含了运行一个容器所需的所有文件系统、代码和依赖关系。它是由Dockerfile构建而来,可以看作是Docker容器的静态快照。

  • Docker容器是Docker镜像的运行实例。它是一个隔离的、轻量级的运行环境,可以在其中运行应用程序。

  • Dockerfile用于构建Docker镜像,而Docker镜像则用于创建和运行Docker容器。

4.常用保留字
  • FROM:描述的是构建新镜像所基于的基础镜像。
  • MAINTAINER:镜像维护者的姓名和邮箱地址。
  • RUN:构建容器时所所需的命令,在docker build时运行。
  • EXPOSE:当前容器对外暴露出的接口。
  • WORKDIR:设置后续指令的工作目录。
  • USER:指定该镜像以什么样的用户去执行,如果都不指定,默认是root。
  • ENV:用来在构建镜像过程中设置环境变量。
  • ADD: 将文件、目录或远程URL复制到镜像中。
  • COPY:将文件或目录复制到镜像中。
  • VOLUME:容器数据卷,用于数据保存和持久化工作。
  • CMD:指定容器启动后的要干的事情。(可以被覆盖)
  • ENTRYPOINT:设置容器创建时的主要命令。(不可被覆盖)
5.案例解析
  • 以tomcat的某个dockerfile部分内容作为案例。

shell 复制代码
FROM amazoncorretto:8-al2-jdk # 指定基础镜像

ENV CATALINA_HOME /usr/local/tomcat # 设置环境变量(以键值对的形式)
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME # 设置后续指令的工作目录。也即落脚点

ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR

RUN set -eux; # 根据需要构建容器

	mv webapps webapps.dist; \ # 可以使用shell语句进行操作
	mkdir webapps; \

# verify Tomcat Native is working properly
RUN set -eux; \
	nativeLines="$(catalina.sh configtest 2>&1)"; \
	nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')"; \
	nativeLines="$(echo "$nativeLines" | sort -u)"; \
	if ! echo "$nativeLines" | grep -E 'INFO: Loaded( APR based)? Apache Tomcat Native library' >&2; then \
		echo >&2 "$nativeLines"; \
		exit 1; \
	fi

EXPOSE 8080 # 指定暴露出的端口号
CMD ["catalina.sh", "run"] # 指定容器启动后的操作
相关推荐
桂月二二4 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
Smile丶凉轩6 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木6 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
dessler7 小时前
Docker-Dockerfile讲解(三)
linux·运维·docker
一休哥助手7 小时前
深入理解 Docker 网桥配置与网络管理
docker·容器·eureka
PittDing8 小时前
【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用
windows·mysql·docker
Mitch31110 小时前
【漏洞复现】CVE-2014-3120 & CVE-2015-1427 Expression Injection
运维·web安全·elasticsearch·docker·apache
m0_7482510810 小时前
docker安装nginx,docker部署vue前端,以及docker部署java的jar部署
java·前端·docker
m0_7482402511 小时前
docker--压缩镜像和加载镜像
java·docker·eureka
lmxnsI13 小时前
docker使用笔记
笔记·docker·容器