Почему Docker не может создавать файлы COPY в папку /dev?

Я хочу создать образ докера, в котором я добавляю файл в папку /dev. Я использую это Dockerfile:

FROM ubuntu:bionic
COPY test.txt /dev/

После создания этого с помощью:

docker build -t test .

Я получаю образ докера, в котором ничего не добавлено в папку /dev. docker build не выдавал ошибок.

Я нахожу это очень странным, потому что копирование в разные папки работает нормально. Например

  • COPY test.txt /
  • COPY test.txt /root/
  • COPY test.txt /home/

все работает нормально.

Есть ли у папки /dev какие-то особые разрешения? Как скопировать файл в папку /dev?

Я использую Панель инструментов Docker для Windows.

Почему вы хотите использовать папку /dev? Та самая специальная папка, в которой лежат ссылки на все устройства?

k0pernikus 28.05.2019 18:19

См.: tldp.org/LDP/sag/html/dev-fs.html

k0pernikus 28.05.2019 18:19

Связано: askubuntu.com/questions/165219/…

k0pernikus 28.05.2019 18:20

@k0pernikus Я хочу добавить драйвер. подробнее github.com/EAIBOT/ydlidar

Floris Devreese 28.05.2019 18:49
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
5
4
1 074
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

/dev — это специальная папка в системах Linux, зарезервированная для хранения ресурсов, связанных с устройствами (файловая система, диски и т. д.), и смонтированная в специальной файловой системе. В контейнере докера он будет перемонтирован с выделенной файловой системой tmpfs, а не в файловой системе основного контейнера (/). См. следующий пример:

$ docker run -it --rm ubuntu:18.04
root@17b9ad96ccbc:/# df -h /dev/
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            64M     0   64M   0% /dev

В вашем случае ваш файл был фактически скопирован во время сборки, но во временной файловой системе, которая умерла, как только сборка была завершена.

Вывод: не используйте /dev в качестве места назначения, выберите другую папку.

Спасибо @Zeitounator. Теперь я понимаю, почему файл файла исчез, хотя ошибки не было.

Floris Devreese 28.05.2019 18:52

Другие вопросы по теме