gpt4 book ai didi

Dockerfile:在 RUN 指令中保留符号链接(symbolic link)

转载 作者:行者123 更新时间:2023-12-02 18:29:52 24 4
gpt4 key购买 nike

我正在构建 Docker 镜像,并且需要执行符号链接(symbolic link)以避免以后执行 Python 脚本时出错。

我在 Dockerfile 中使用以下命令执行此符号链接(symbolic link):
RUN ln -s /dev/null /dev/raw1394
但是,稍后使用交互式 shell 输入图像时,此符号链接(symbolic link)不存在:
$ docker run -it docker_image /bin/bash
root@789442c6ccf6:/# ls /dev/
console core fd full mqueue null ptmx pts random shm stderr stdin stdout tty urandom zero

如果我从容器内部运行这个符号链接(symbolic link),它工作得很好。

如何使此符号链接(symbolic link)在图像的所有层中持续存在?

谢谢

最佳答案

为了使文件(实际上是 inode 的所有内容)持久化,您需要创建一个卷。在这种特殊情况下(/dev 目录),这很可能是不可能的,因为/dev 是用于系统文件的。

但是您可能知道 Dockerfile 中的 CMD 命令。这是为启动镜像而执行的命令。您可以指向一个 shell 脚本,该脚本将首先创建您的链接,然后将执行交给您的代码。必须将此 shell 脚本添加到镜像中,并且需要设置执行位。

像这样在你的 Dockerfile 中:

ADD start.sh /
CMD /start.sh

在 start.sh 中:
#!/bin/sh

ln -s /dev/null /dev/raw1394
exec /your/binary_or_whatever

关于Dockerfile:在 RUN 指令中保留符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50812618/

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