Dockerfile:在RUN指令

时间:2018-06-12 08:30:18

标签: docker dockerfile symlink

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

我在Dockerfile中使用以下命令执行此符号链接:

RUN ln -s /dev/null /dev/raw1394

但是,稍后使用交互式shell输入图像时,此符号链接不存在:

$ 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

如果我从容器内部运行这个符号链接,它运行良好。

如何让这个符号链接在图像的所有图层中保持不变?

谢谢

1 个答案:

答案 0 :(得分:1)

为了创建文件(实际上是一个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
相关问题