Docker卷安装失败并显示以下错误

时间:2020-07-27 19:16:40

标签: docker docker-compose dockerfile docker-volume

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

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

谢谢, 阿尼什(Anish)

1 个答案:

答案 0 :(得分:0)

容器中的进程可能不是以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挂载到文件中。这不起作用。