объем докера во время запуска докера

Я пытаюсь смонтировать библиотеку, присутствующую в контейнере, в том докера во время запуска докера. Команда выглядит следующим образом:

docker run -d  --name   mbus-docker -it --rm --mount source=/mbus/lib/libMurata.a,target=/mbus_volume   mbus-docker

Я проверил, выполнив в контейнере, что библиотека присутствует в пути /mbus/lib/libMurata.a

Когда я пытаюсь смонтировать библиотеку на том. Я получаю следующую ошибку:

docker: Error response from daemon: create /mbus/lib: "/mbus/lib" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

person Zaks    schedule 31.07.2019    source источник
comment
Когда вы говорите объем докера. Этот том должен существовать. Ваши вопросы не так ясны.   -  person mchawre    schedule 31.07.2019
comment
Том Docker уже существует на хосте, созданном с помощью тома docker create --name mbus_volume   -  person Zaks    schedule 31.07.2019


Ответы (2)


Если вы хотите смонтировать /mbus/lib/libMurata.a на путь /mbus_volume внутри контейнера, укажите тип монтирования как bind.

Ваша команда запуска докера должна быть

docker run -d  --name   mbus-docker -it --rm --mount type=bind,source=/mbus/lib/libMurata.a,target=/mbus_volume/   mbus-docker

Это смонтирует /mbus/lib/libMurata.a в папку /mbus_volume/.

Ошибка, которую вы получили "/mbus/lib" includes invalid characters for a local volume name, говорит, что /mbus/lib является недопустимым именем тома. Поскольку тип привязки по умолчанию для параметра монтирования — это тип volume. В этом случае он попытается создать том локально в вашей системе с именем /mbus/lib, которое является недопустимым именем тома.

Пройдите через это .

Надеюсь это поможет.

Обновление:

Если на вашем хосте существует том с именем mbus_volume. Тогда попробуйте это:

docker run -d  --name   mbus-docker -it --rm --mount type=volume,source=mbus_volume,target=/mbus/lib/  mbus-docker
person mchawre    schedule 31.07.2019
comment
@zaks Дайте мне знать, помогло ли это. - person mchawre; 31.07.2019
comment
Спасибо за ответ. С измененной командой он выдает мне ошибку как докер: Ответ об ошибке от демона: неверная конфигурация монтирования для типа привязки: исходный путь привязки не существует: /mbus/lib. См. 'docker run --help'. - person Zaks; 31.07.2019
comment
эта папка /mbus/lib существует на хосте? - person mchawre; 31.07.2019
comment
Он существует внутри контейнера. Я пытаюсь смонтировать каталог контейнера в том докера - person Zaks; 31.07.2019
comment
Том докера уже существует. Если это так, вам нужно указать имя тома в source и тип должен быть volume или вы можете пропустить его, потому что тип по умолчанию volume. - person mchawre; 31.07.2019
comment
@zaks, что вы подразумеваете под объемом докера? Если вы хотите, чтобы библиотека /mbus/lib/libMurata.a внутри вашего контейнера докеров присутствовала в папке /mbus_volume на вашем хосте, вам нужна опция -v /mbus_volume:/mbus/lib в вашей команде запуска докера, нет необходимости в монтировании. - person mchawre; 31.07.2019
comment
Я столкнулся с небольшой проблемой. Попытка запустить два контейнера докеров, монтируемых на один и тот же том (mbus_volume) 1) docker run -d --name mbus-docker -it --rm --mount type=bind,source=/mbus/lib/libMurata.a,target =/mbus_volume/ mbus-docker 2) docker run -d --name wakaama-docker -it --rm --mount type=bind,source=/murata/lib/wakama.a,target=/mbus_volume/ wakaama-docker . - person Zaks; 31.07.2019
comment
После запуска первого контейнера библиотека корректно монтируется на том. Но когда я запускаю второй, это не так. Должен ли я сделать что-то особенное, чтобы том можно было монтировать в оба контейнера? - person Zaks; 31.07.2019
comment
Вы проверили этот stackoverflow.com/questions/42854936/ - person mchawre; 31.07.2019
comment
Примите ответ, если он помог. Чтобы другие могли это знать. - person mchawre; 31.07.2019

вы можете просто использовать:

docker run -d  --name   mbus-docker -it --rm -v /mbus/lib/libMurata.a:/mbus_volume/libMurata.a mbus-docker
person LinPy    schedule 31.07.2019
comment
Спасибо за ваш ответ. Команда создает внутри контейнера новую папку с именем /mbus_volume и помещает в нее libMurata.a. Он не добавляет библиотеку внутри тома докера - person Zaks; 31.07.2019
comment
что ты имеешь в виду под not adding library inside docker volume ? - person LinPy; 31.07.2019
comment
Когда я проверяю объем докера, я не вижу ничего добавленного внутри этого - person Zaks; 31.07.2019