欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 初识dockerFile之RUN和WORKDIR

初识dockerFile之RUN和WORKDIR

2024/10/24 8:22:55 来源:https://blog.csdn.net/weixin_48278764/article/details/140636142  浏览:    关键词:初识dockerFile之RUN和WORKDIR

在Dockerfile中,RUNWORKDIR 是两个常用的指令,用于定义容器镜像的构建过程和工作目录的设置。

  1. RUN 指令

    • RUN 指令用于在容器镜像中执行命令。它可以运行任何有效的 Linux 命令、shell 脚本或可执行文件。在你的例子中,RUN mkdir -p /surveyking-server 的意思是在容器镜像中创建一个名为 surveyking-server 的目录。
    • -p 参数用于在创建目录时,自动创建必要的父目录。这确保了如果 /surveyking-server 的上级目录不存在,也会被一同创建。
  2. WORKDIR 指令

    • WORKDIR 指令用于设置容器启动后的工作目录。换句话说,它指定了容器中命令的执行路径。在你的例子中,WORKDIR /surveyking-server 将会把 /surveyking-server 目录设置为容器启动后的默认工作目录。
    • 如果在 WORKDIR 指令之后执行的命令(例如 RUNCMDENTRYPOINT 等)使用了相对路径,那么这些路径将会相对于 WORKDIR 指定的路径来执行。

因此,结合起来理解你的示例代码:

  • RUN mkdir -p /surveyking-server:在容器镜像中创建一个目录 /surveyking-server,并且自动创建所需的父目录。
  • WORKDIR /surveyking-server:设置容器启动后的默认工作目录为 /surveyking-server

RUN 是容器内创建目录还是在容器外创建目录

在 Dockerfile 中使用 RUN 指令创建的目录是在容器内部创建的,而不是在容器外部。让我们更详细地解释:

  1. Dockerfile 中的 RUN 指令

    • 当你在 Dockerfile 中使用 RUN 指令时,这些命令实际上是在 Docker 容器的构建过程中执行的,而不是在宿主机上执行的。
    • Docker 在构建镜像时会执行每个 RUN 指令,并在当前镜像的文件系统中进行操作。这意味着任何由 RUN 指令创建的文件或目录都存在于将来基于该镜像启动的容器中,而不是在构建镜像的宿主机文件系统中创建。
  2. 容器内部与容器外部的区别

    • 容器内部:指运行在 Docker 容器内部的文件系统。这个文件系统是由 Docker 镜像构建时的每个命令和指令决定的,包括 RUNCOPY 等。
    • 容器外部:指 Docker 容器运行时的宿主机文件系统,即 Docker 容器运行在宿主机操作系统之上,但它有自己独立的文件系统和资源管理。

因此,当你在 Dockerfile 中写入 RUN mkdir -p /surveyking-server 时,这个命令在容器镜像的构建阶段就会执行,在镜像的文件系统中创建 /surveyking-server 目录。当你启动基于这个镜像的容器时,容器会从这个镜像中启动,并且 /surveyking-server 目录会存在于容器的文件系统中,而不是在宿主机的文件系统中。

总结来说,Dockerfile 中的 RUN 指令创建的目录是在容器内部创建的,这些操作影响的是容器镜像的文件系统,而不是宿主机的文件系统。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com