gpt4 book ai didi

linux - 上一个图像中存在文件夹时,docker RUN mkdir 不起作用

转载 作者:行者123 更新时间:2023-12-04 19:40:19 27 4
gpt4 key购买 nike

它们之间的唯一区别是centos镜像中存在“dev”文件夹,
检查这段代码中的注释(在执行 docker build 时),如果有人能解释为什么,不胜感激?

FROM centos:latest 

LABEL maintainer="xxxx"

RUN dnf clean packages
RUN dnf -y install sudo openssh-server openssh-clients curl vim lsof unzip zip

**below works well!**

# RUN mkdir -p oop/script
# RUN cd oop/script
# ADD text.txt /oop/script

**/bin/sh: line 0: cd: dev/script: No such file or directory**

RUN mkdir -p dev/script
RUN cd dev/script
ADD text.txt /dev/script

EXPOSE 22

最佳答案

这里有两件事。
你的问题的根源是 /dev是一个特殊目录,并为每个 RUN 重新创建命令。所以虽然RUN mkdir -p dev/script成功创建 /dev/script目录,该目录在 RUN 之后就消失了命令完成。
此外,像这样的命令...

RUN cd /some/directory
...完全没有操作。这与运行 sh -c "cd /some/directory" 完全相同。在您的本地系统上;而 cd成功, cd只影响运行 cd 的进程命令,并且对父进程或后续命令没有影响。
如果你真的需要把东西放到 /dev ,您可以将其复制到 Dockerfile 中的其他位置(例如 COPY test.txt /docker/test.txt ),然后在运行时通过您的 CMDENTRYPOINT将其复制到 /dev 中的适当位置.

关于linux - 上一个图像中存在文件夹时,docker RUN mkdir 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65952816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com