【问题标题】:Docker volume mount fails with the below errorDocker 卷挂载失败并出现以下错误
【发布时间】:2020-07-27 19:16:40
【问题描述】:

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

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

谢谢, 阿尼什

【问题讨论】:

  • 对我的回答有何评论?解决问题了吗?

标签: docker docker-compose dockerfile docker-volume


【解决方案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 挂载到文件中。这不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2022-06-12
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    相关资源
    最近更新 更多