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

Dockerfile默认的执行路径是构建镜像时的上下文路径,即Dockerfile所在的目录。

Dockerfile中的指令通常包括设置基础镜像、复制文件、安装软件包、设置环境变量、定义容器启动时要运行的命令等。这些指令都是基于Dockerfile所在的目录来执行的,因此,Dockerfile中引用的文件或目录路径都是相对于该目录的。

举个例子,如果你在Dockerfile中使用了COPY指令来复制一个文件到镜像中,你需要指定源文件相对于Dockerfile的路径。如果源文件就在Dockerfile所在的目录下,你可以直接写文件名;如果源文件在子目录中,你需要写子目录/文件名。

 

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:

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

 

posted @ 2024-04-06 00:04  Esther_Cheung  阅读(40)  评论(0编辑  收藏  举报