Dockerfile: сохранить символическую ссылку в инструкции RUN - PullRequest
0 голосов
/ 12 июня 2018

Я создаю образ Docker, и мне нужно выполнить символическую ссылку, чтобы избежать ошибки при последующем выполнении сценариев Python.

Я выполняю эту символическую ссылку с помощью следующей команды в файле Docker:

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

Однако при последующем вводе изображения с интерактивной оболочкой эта символическая ссылка не существует:

$ 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 голосов
/ 12 июня 2018

Для того, чтобы сделать файлы (фактически все, что является индексом) постоянными, вам нужно создать том.В этом особом случае (каталог / dev) это, скорее всего, невозможно, поскольку / dev предназначен для системных файлов.

Но вы, вероятно, знаете о команде CMD в Dockerfile.Это команда, которая выполняется для запуска вашего изображения.Вы можете указать на сценарий оболочки, который сначала создаст вашу ссылку, а затем передаст выполнение вашему коду.Этот сценарий оболочки должен быть добавлен к изображению и должен иметь установленный бит выполнения.

Как в вашем Dockerfile:

ADD start.sh /
CMD /start.sh

И в start.sh:

#!/bin/sh

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