【发布时间】:2023-03-20 08:05:01
【问题描述】:
我想使用安装在容器上的卷,但在尝试运行时会引发下一个错误:
docker:来自守护进程的错误响应:创建挂载源时出错 路径 '/var/skeeter/templates': mkdir /var/skeeter: 只读文件 系统。
这是我的 Dockerfile:
FROM maven:3-jdk-13-alpine
RUN mkdir -p /var/container/skeeter/templates
WORKDIR /project
ADD ./target/skeeter-0.0.1-SNAPSHOT.jar skeeter-0.0.1-SNAPSHOT.jar
EXPOSE 8080
CMD java -jar skeeter-0.0.1-SNAPSHOT.jar
这是运行命令:
docker run -t -p 8080:8080 -v /var/skeeter/templates:/var/container/skeeter/templates --name skeeter-docker-container skeeter-docker-image:最新
这是我检查目录权限时的 CMD 输出:
ls -l /var/skeeter/
total 4 drwxrwxrwx 2 root root 4096 ago 11 16:45 templates
ls -ld /var/skeeter/
drwxrwxrwx 3 root root 4096 ago 11 16:45 /var/skeeter/
更新: 我创建了一个新卷并在 -v 参数中使用了它的名称并运行了它,但是 java 应用程序在目录中找不到文件
【问题讨论】:
-
我对该错误消息的阅读是(a)主机目录
/var/skeeter/templates不存在(我认为甚至/var/skeeter不存在),以及(b)文件系统包含/var/skeeter(很可能是主机的/var)以只读方式挂载。您是否从主机上的根 shell 运行这两个ls -l命令? -
@David Maze 是的,我正在主机上的 root shell 运行这些 ls 命令
标签: docker ubuntu dockerfile