Добавьте монтирование привязки к Dockerfile так же, как том

Я хочу добавить привязку к файлу докера так же, как я инициализирую том внутри Dockefile. Есть ли способ для этого?


person Mufeed    schedule 22.12.2017    source источник


Ответы (3)


Dockerfile определяет, как создается образ, а не как он используется, поэтому вы не можете указать монтирование привязки в Dockerfile. Вместо этого попробуйте использовать docker-compose. Простой docker-compose.yml, который монтирует для вас каталог, будет выглядеть так:

version: '3.1'

services:
  mycontainer:
    image: myimage
    build: .
    volumes:
      - './path/on/docker/host:/path/inside/container'  

build: . является необязательным, если вы создаете образ каким-то другим способом, но иногда бывает удобно сделать все сразу.

Запустите это с помощью docker-compose up -d

person boyvinall    schedule 22.12.2017
comment
-d не требуется - person poige; 01.06.2020
comment
как том применяется к компьютерам с Windows - я использую определенный путь для Windows? (окна с контейнерами Linux) - person rdelgado-incinc; 08.12.2020

В дополнение к тому, что говорят другие ответы:

Поскольку монтирование с привязкой обеспечивает доступ к файловой системе хоста, разрешение их встраивания в образ было бы огромным риском для безопасности. Рассмотрим образ, который претендует на роль, скажем, веб-сервера, но на самом деле bind монтирует ваши /etc/passwd и /etc/shadow, а затем отправляет их на удаленный сервер.

Или тот, который связывает монтирование /lib/ld-linux.so, а затем перезаписывает его, тем самым ломая всю вашу систему.

По этим причинам вы не можете встроить монтирование привязки в свой Dockerfile. Точно так же вы не можете указать сопоставления портов хоста, доступ к хост-устройству или любые другие подобные атрибуты в Dockerfile.

person larsks    schedule 22.12.2017

Простой ответ - нет.

Основной принцип дизайна образов докеров — переносимость. Связное монтирование зависит от хоста, поскольку смонтированная папка определяется на хост-компьютере. Таким образом, это противоречит требованию переносимости образов Docker.

person yamenk    schedule 22.12.2017