首页 > 解决方案 > 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

非常感谢任何有关解决此问题的建议。

谢谢你,阿尼什

标签: dockerdocker-composedockerfiledocker-volume

解决方案


容器中的进程可能不是以其他用户身份运行,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到文件中。这不起作用。


推荐阅读