WORKDIR的坑

2024-05-10 20:58
文章标签 workdir

本文主要是介绍WORKDIR的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于dockerfile编写的时候WORKDIR的坑,指定了WORKDIR为非根目录再使用make命令竟然会报gcc库找不到的问题,mark下!只需把WORKDIR修改回根目录"/"就能修复。

以下为WORKDIR简介:

Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。

相当于设置容器的工作目录了。我们来看一个dockerfile文件

#test
FROM ubuntu
MAINTAINER hello
RUN mkdir /mydir
RUN echo hello world > /mydir/test.txt
WORKDIR /mydir
CMD ["more" ,"test.txt"]

假设根据该dockerfile构建的镜像名为 myimage

1、运行 docker run myimage  输出 hello world

2、运行 docker run myimage more test.txt  和上面输出一致

可以看出,more的参数是 test.txt,但没有指定路径,却能成功,说明当前路径就是上面WORKDIR指令设置的。

如果我们在上面的dockerfile中把WORKDIR指令去掉,创建的容器运行会报文件不存在错误。

 

3、可以在 docker run命令中用 -w参数覆盖掉WORKDIR指令的设置,如:

执行 docker run -w / myimage

上面的-w参数将容器的工作目录设置成了根目录,而根目录下没有test.txt文件。

所以结果显示:test.txt: No such file or directory

这篇关于WORKDIR的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977537

相关文章

Yocto - 变量介绍:BASE_WORKDIR、WORKDIR和D

BASE_WORKDIR 指向所有配方的工作目录根目录。默认值为"${TMPDIR}/work"。 Points to the base of the work directory for all recipes. The default value is “${TMPDIR}/work”. $ bitbake -e <recipe-name>| grep ^BASE

Dockerfile: WORKDIR vs VOLUME

WORKDIR         WORKDIR指令为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。         如果WORKDIR不存在,它将被创建,即使它没有在任何后续Dockerfile指令中使用。 语法 : WORKDIR dirpath         WORKDIR指令可以在Dockerfile中多次使用。如果提供