Dockerfile中常用配置项的功能都是什么?

FROM:

指定基础镜像,新镜像将基于这个基础镜像构建。

RUN:

在镜像构建时执行命令,如安装软件包、设置环境变量等。

格式:RUN <command> 或 RUN ["executable", "param1", "param2"]

CMD:

设置容器启动时默认执行的命令。

格式:CMD ["executable","param1","param2"] 或 CMD command param1 param2 或 CMD ["param1","param2"](作为ENTRYPOINT的默认参数)。

ENTRYPOINT:

配置容器启动时运行的命令,使得容器以应用程序的方式运行。

格式:ENTRYPOINT ["java", "-jar", "/app.jar"]

在这个例子中,当容器启动时,它会执行java -jar /app.jar命令来运行指定的Java应用程序。

COPY:

本地文件或目录复制到Docker镜像的指定路径

格式:COPY <src>... <dest>

比如

COPY . . 这个命令实际上做了两件事情:

  1. 第一个 . 指的是构建上下文中的当前目录。构建上下文通常是你在运行 docker build 命令时所在的目录,或者是通过 -f 参数指定的 Dockerfile 所在的目录。这个目录中的所有文件和子目录都会被考虑在内。
  2. 第二个 . 是目标路径,也就是镜像内的路径。在这里,它表示镜像的当前工作目录。因此,COPY . . 会将构建上下文中的所有文件和目录复制到镜像的当前工作目录中。

ADD:

与COPY类似,但还可以从URL获取文件并自动解压缩。

格式:ADD <src>... <dest>

WORKDIR:

设置容器内的工作目录,即容器内部,命令执行时的默认路径。用于RUN、CMD、ENTRYPOINT、COPY和ADD指令。

格式:WORKDIR /path/to/workdir

VOLUME:

用于为容器指定一个或多个挂载点。这些挂载点可以用于将宿主机的目录或文件与容器内部进行共享,从而实现数据的持久化存储

使用VOLUME指令的一个常见场景是数据库容器。例如,你可以使用VOLUME指令将MySQL数据库的存储目录挂载到容器外部,这样即使MySQL容器被删除或重建,数据库的数据也会保留在宿主机上,不会被丢失。

例如,你可以在Dockerfile中添加如下指令来声明一个数据卷:
Dockerfile:
VOLUME /var/lib/mysql

在运行容器时,使用-v选项将数据卷映射到宿主机的目录来实现数据的持久化存储:-v <宿主机目录或文件>:<容器目录或文件>

bash:

docker build -t myimage .  
docker run -v /host/path:/var/lib/mysql myimage

  在这个例子中,/host/path 是宿主机上的目录,/var/lib/mysql 是容器内的目录。通过 -v 参数,你将宿主机的 /host/path 目录挂载到了容器的 /var/lib/mysql 目录上。这样,容器对 /var/lib/mysql 目录的读写操作实际上是在操作宿主机上的 /host/path 目录,从而实现了数据的持久化。

   

EXPOSE:

声明容器要监听的端口,方便外部访问容器服务。

格式:EXPOSE <port> [<port>...]

ENV:

设置环境变量。可以在构建镜像和启动容器时调用。

格式:ENV <key>=<value> [<key>=<value>...]

LABEL:

为镜像添加元数据标签,比如版本号。

格式:LABEL <key>=<value> [<key>=<value>...]

USER:

设置运行容器时使用的用户名或UID和组名或GID。

格式:USER <user>[:<group>] 或 USER <uid>[:<gid>]

ARG:

定义构建时的环境变量,仅在构建过程中有效。(可以后续覆盖)

格式:ARG <name>[=<default value>]

ONBUILD:

定义在当前镜像基础上构建新镜像时需要执行的操作。

格式:ONBUILD [INSTRUCTION]

STOPSIGNAL:

设置容器停止时发送的信号。

HEALTHCHECK:

定义容器健康检查指令,用于判断容器是否正常运行。

 

热门相关:别吃那个鬼   重生世家子   神医娘亲之腹黑小萌宝   全民女神,重生腹黑千金   首席的亿万老婆