dockerfile中copy与run区别
本文记录一个很简单的问题,记录该文章的原因是在调试过程中,老眼昏花,因为copy和run的原因,多排错一小时,特此记录。
首先看看以下。
- COPY:
- 功能: COPY 是用来将构建上下文(本地机器的文件系统)中的文件或目录复制到 Docker 镜像中的指定位置。它只是一个复制操作,不执行任何命令。
- 详细用途: 常用来将应用代码、配置文件或其他资源文件放入镜像中,以便它们可以在容器运行时被使用。例如,将你的应用代码复制到 /app 目录下。
- 执行结果: 仅将文件从主机系统复制到镜像,不会在镜像中执行任何命令或改变文件的内容。每次使用 COPY 都会创建一个新的镜像层。
- 示例: COPY ./src /app/src
- RUN:
- 功能: RUN 用来在镜像构建过程中执行命令。通常用于安装软件包、配置环境或执行其他必要的初始化命令。运行的命令会在 Docker 容器中执行。
- 详细用途: 比如使用 RUN 安装操作系统依赖项、编译代码、运行脚本等。任何在命令行可以运行的命令都可以通过 RUN 在 Dockerfile 中执行。
- 执行结果: 执行的命令会在镜像中生成一个新的层,命令的执行结果会被保存到镜像中,并在容器运行时保留。
- 示例: RUN apt-get update && apt-get install -y python
总结:
COPY 只是文件的传输操作,复制文件到镜像中,而 RUN 是实际执行命令,在镜像里面的完成软件安装、环境配置等操作。
问题很蠢,可能盯着电脑一天眼睛花掉花了我一个小时,还是需要记录一下。