Сбой при монтировании тома Docker из-за ошибки ниже

При монтировании тома Docker возникает ошибка, указанная ниже.

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

root@ip-172-31-21-249:~/data# docker run -it -p 8080:8080 -p 29418:29418 -v /root/data:/var/gerrit/etc/ forkub
error: could not lock config file /var/gerrit/etc/gerrit.config: Permission denied
root@ip-172-31-21-249:~/data# docker run -it -p 8080:8080 -p 29418:29418 -v /root/data:/var/gerrit/etc forkub
error: could not lock config file /var/gerrit/etc/gerrit.config: Permission denied
root@ip-172-31-21-249:~/data# docker run -it -p 8080:8080 -p 29418:29418 -v /root/data/:/var/gerrit/etc forkub
error: could not lock config file /var/gerrit/etc/gerrit.config: Permission denied
root@ip-172-31-21-249:~/data# docker run -it -p 8080:8080 -p 29418:29418 -v /root/data/:/var/gerrit/etc/ forkub
error: could not lock config file /var/gerrit/etc/gerrit.config: Permission denied
root@ip-172-31-21-249:~/data# docker run -it -p 8080:8080 -p 29418:29418 -v /root/data/:/var/gerrit/etc/gerrit.config forkub
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/root/data\\\" to rootfs \\\"/var/lib/docker/overlay2/0a5356aed5a1aa1d1359912ccba7547db55b0377b3a509b898828734868e335a/merged\\\" at \\\"/var/lib/docker/overlay2/0a5356aed5a1aa1d1359912ccba7547db55b0377b3a509b898828734868e335a/merged/var/gerrit/etc/gerrit.config\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
ERRO[0000] error waiting for container: context canceled

Любые предложения по исправлению этого действительно приветствуются.

Спасибо, аниш


person anish anil    schedule 27.07.2020    source источник
comment
какие-нибудь комментарии к моему ответу? Это решило проблему?   -  person toydarian    schedule 05.08.2020


Ответы (1)


Вероятно, процесс в контейнере работает не как root, а как другой пользователь. Однако файл принадлежит root и не может быть прочитан пользователем, который запускает процесс. Таким образом, процесс не может прочитать файл.
Поэтому вам необходимо убедиться, что пользователь, запускающий процесс в контейнере, может получить доступ к этим файлам. Самый простой способ - сделать /root/data мир доступным для чтения и записи (chmod -R 777 /root/data), но это, очевидно, не лучший способ. Правильный способ сделать это - выяснить, какой пользователь запускает процесс в контейнере, и передать этому пользователю право собственности на /root/data и все в нем.

Проблема с docker run -it -p 8080:8080 -p 29418:29418 -v /root/data/:/var/gerrit/etc/gerrit.config forkub в том, что вы пытаетесь смонтировать каталог /root/data к файлу. Это не работает.

person toydarian    schedule 28.07.2020