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
Также обратите внимание на комментарий ниже этого ответа, чтобы получить направление для решения.