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

5

我想在容器上使用挂载的卷,但尝试运行时会出现以下错误:

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:latest

当我检查目录权限时,这是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应用程序无法找到目录内的文件。


你尝试过使用只读吗?https://docs.docker.com/storage/volumes/#use-a-read-only-volume - pacuna
我的意思是,该错误消息表明(a)主机目录“/var/skeeter/templates”不存在(我认为甚至/var/skeeter也不存在),(b)包含/var/skeeter的文件系统(很可能是主机的/var)以只读方式挂载。您是否从主机上的根shell运行这两个“ls -l”命令? - David Maze
@David Maze 是的,我正在主机上的 root shell 中运行这些 ls 命令。 - Martin Larizzate
1个回答

6

这只是一个权限问题。 我把源目录移动到/home/myuser/directory/,然后就工作了。


4
大家快点儿!作为一个对这个领域不熟悉的新手,我很可能会以错误的方式解决问题。我非常乐于接受其他想法,而不仅仅是说“没有用的答案”。 - Martin Larizzate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接