Я не могу за свою жизнь даже найти, какие варианты я могу передать через --driver

я есть .net Core Web Api с файлами конфигурации в папке с именем Config. Я создал изображение и контейнер из него, и я правильно вижу с помощью терминала, что контейнер содержит папку и файлы конфигурации внутри.

Моя проблема в том, что до сих пор я не смог найти способ создать тот же контейнер, монтирующий / привязывающий папку Config к физическому пути, следуя требованиям:

1) Подключить папку Config к определенному местоположению хоста

2) При создании контейнера папка Config должна быть заполнена файлами в изображении

3) При создании контейнера переопределите любой существующий файл, уже присутствующий в папке, с файлами на изображении.

4) Уметь настраивать файлы конфигурации в папке с хоста

Моя команда создания:

    docker --tls -H="$containerUrl" `
        create `
        --hostname $hostname `
        --name $containerName `
        --mac-address=$containerMacAddress `
        --ip $containerIpAddress `
        --net "bridged-network" `
        --workdir '/app' `
        --mount type=bind,src=$configVolumePath,target=/app/Config `
        --publish "0.0.0.0::80" `
        -t `
        -i $imageName":"$script:buildversion    

С помощью--mount с типомпривязыватьКак указано в документации, если в папке есть какие-либо файлы, они скрыты внутри контейнера, и приложение увидит развернутые файлы.Проблема этого решения заключается в том, что я не могу обновить файлы в папке config с хоста.

Теперь удалениетип = связывания Я получаю тот же результат, и это сбивает с толку.

Я пытался использовать объем--volume $ configVolumePath ": / app / Config: rw", но при этом существующие файлы в каталоге хоста не переопределяются, и те, которые будут использоваться в контейнере.

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

Контейнерный сервер работает на NAS, и это версия:

 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   781516c
 Built:        Thu Aug  3 16:04:05 2017
 OS/Arch:      linux/amd64

Очевидно, я что-то упустил, и мне нужно больше узнать о докере, кто-нибудь может помочь?

Мои ссылки:

1)https://docs.docker.com/engine/admin/volumes/bind-mounts/

2)https://docs.docker.com/engine/admin/volumes/volumes/

Ответы на вопрос(1)

Решение Вопроса

Если том / монтирование хоста существует и содержит файлы, он «переопределит» все содержимое контейнера. В противном случае файлы контейнера будут зеркально отображены на томе / узле хоста, а папка контейнера и хост будут синхронизированы. В обоих случаях редактирование файлов на хосте ВСЕГДА будет повторяться внутри контейнера.

В вашем случае вы можете сделать следующее:

docker volume create --driver local \
    --opt type=none \
    --opt device=$configVolumePath \
    --opt o=bind \
    config_vol

Это создаст том, который будет сохранен в $ configVolumePath на хосте.

При создании контейнера используйте этот объем:

docker create --volume config_vol:/app/Config

Вы получите при запуске, папка хоста будет пуста, а файлы с изображения будут «скопированы» в папку хоста. Редактирование файлов в$configVolumePath будут освобождены внутри контейнера и аналогично файлы, отредактированные внутри контейнера/app/Config будет отражено в$configVolumePath на хосте.

 Derek Adair16 окт. 2018 г., 22:11
ЧАСЫ ... нет ... нет ДНЕЙ, потраченных впустую, пытаясь найти достойное решение для этого за последние несколько лет, используя докер.
 Christian Ulbrich19 апр. 2018 г., 14:09
Великолепный! Я искал варианты для передачи на локальный драйвер тома и не мог найти их нигде для привязки!
 Derek Adair16 окт. 2018 г., 22:15
Я не могу за свою жизнь даже найти, какие варианты я могу передать через --driver
 Derek Adair16 окт. 2018 г., 22:15
Вы должны передать некоторые из этих знаний в докерскую документацию, потому что их документы по использованию --bind / mounts в общем случае тупые (IMO).
 Norcino07 дек. 2017 г., 14:47
Спасибо, Яменк, поэтому моя проблема заключалась в том, что я не удалял содержимое папки. Я попытался создать том, и он ведет себя так, как вы описали. Чтобы дважды проверить, что я правильно понял, фактическое «предварительное» создание тома не требуется, передачи параметров тома как части процесса создания докера должно быть достаточно, я попробую это сегодня вечером. Есть ли способ, через какой-либо параметр --opt, принудительно удалить / переопределить содержимое папки? Просто примечание, чтобы запустить предложенный скрипт, мне нужно было использовать параметр --name config_vol

Ваш ответ на вопрос