Ubuntu 和 Docker:守护程序的错误响应:创建挂载源路径时出错

Mar*_*ate 5 ubuntu docker dockerfile

我想使用安装在容器上的卷,但在尝试运行时会抛出下一个错误:

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
Run Code Online (Sandbox Code Playgroud)

这是运行命令:

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/
Run Code Online (Sandbox Code Playgroud)

更新:我创建了一个新卷并在 -v 参数中使用了它的名称并且它运行了,但是 java 应用程序无法在目录中找到文件

Mar*_*ate 7

这只是一个权限问题。我将源目录移动到 /home/myuser/directory/ 并工作。

  • 拜托了伙计们!由于我是这个世界的新手,因此可能无法以正确的方式解决它。我真的愿意接受其他想法,而不只是说“没有用的答案” (5认同)