我正在构建一个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
如果我从容器内部运行这个符号链接,它运行良好。
如何让这个符号链接在图像的所有图层中保持不变?
谢谢
答案 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