Docker запускает -v, монтируя файл как каталог

Я пытаюсь смонтировать каталог, содержащий файл с некоторыми учетными данными, в контейнер с флагом -v, но вместо монтирования этого файла как файла, он монтирует его как каталог:

Запустить скрипт:

$ mkdir creds/
$ cp key.json creds/key.json
$ ls -l creds/
total 4
-rw-r--r-- 1 root root 2340 Oct 12 22:59 key.json
$ docker run -v /*pathToWorkingDirectory*/creds:/creds *myContainer* *myScript*

Когда я смотрю на отладочный выброс docker run команда, я вижу, что это создает /creds/ каталог, но по какой-то причине создает key.json в качестве подкаталога под этим, а не копировать файл.

Я видел некоторые другие сообщения, говорящие, что если вы скажете docker run чтобы смонтировать файл, который он не может найти, он создаст каталог на контейнере с именем файла, но, поскольку я не указал имя файла, и он знал, как назвать новый каталог 'key.json', кажется, что он мог найти файл, но все равно создал его как каталог? Кто-нибудь сталкивался с этим раньше?

Если это уместно, скрипт запускается в Docker-in-Docker в другом контейнере как часть процесса CI GitLab.

1 ответ

Решение

Вы запускаете Docker-in-Docker, это означает, что когда вы указываете -v том, Docker будет искать этот каталог на хосте, так как Docker-in-Docker с общим сокетом фактически означает, что ваша команда run запускает контейнер рядом с контейнером бегуна.

Я объясню это более подробно в этом SO ответе:

/questions/6036027/doker-gitlab-ci-v-dokere-ne-mozhet-sozdat-tom/6036033#6036033

Также обратите внимание на комментарий ниже этого ответа, чтобы получить направление для решения.

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