Docker无法从主机的SAN读取

时间:2019-04-10 15:02:34

标签: docker unix tomcat rhel

因此,我在3个不同的Docker主机(相同的docker compose / dockerfile)上部署了一个tomcat应用程序容器。所有这些主机共享一个挂载在/ var / opt / data / flat / APP / files上的SAN逻辑卷。我的容器需要能够读取或写入此SAN。 但是,只有我的第一个Docker容器才能做到这一点。我的3个实例之间的差异可能是什么,使其在第一个实例上起作用,但在其他三个实例上却不起作用。我可能在第一台主机上更改了某些内容,而在其他主机上没有更改?直到今天,我仍然不知道是什么。

Docker撰写摘录:

  volumes:
      - /var/opt/data/flat/APP/log:/var/opt/data/flat/APP/log:Z
      - /var/opt/data/flat/APP/files:/var/opt/data/flat/APP/files

在3个主机中,权限是相同的,并且我没有遇到读/写问题:

[app]$ ls -al /var/opt/data/flat/APP
drwxrwxrwx. 3 app  app  1024 Apr  9 16:05 conf
drwxrwxrwx. 6 app  app  4096 Apr 10 13:45 files
drwxrwxrwx. 2 app  app  4096 Mar 29 14:09 log
drwxrwxrwx. 2 app  app  1024 Mar 18 11:48 scripts

从3个容器中:

root@38033790df5d:/var/opt/data/flat/APP# ls -al /var/opt/data/flat/APP
total 8
drwxr-xr-x. 4 root   root      30 Apr  9 15:12 .
drwxr-xr-x. 3 root   root      17 Apr  9 15:12 ..
drwxrwxrwx. 6 nobody nogroup 4096 Apr 10 11:45 files
drwxrwxrwx. 2 nobody nogroup 4096 Mar 29 13:09 log

我在Container#2和Container#3上遇到的错误:

root@9c8027865360:/var/opt/data/flat/APP# ls files
ls: cannot open directory 'files': Permission denied

但是,我所有的容器似乎都能在日志文件夹中写入日志。

3台主机上/etc/docker/daemon.json的内容:

{"userns-remap": "default"}

1 个答案:

答案 0 :(得分:0)

已解决,将SELinux设置为在第一个VM上允许,并在其他VM上强制执行。所以我在每台主机上完全禁用了它。

然后我相应地更新了撰写文件:

volumes:
      - /var/opt/data/flat/APP/log:/var/opt/data/flat/APP/log:Z
      - /var/opt/data/flat/APP/files:/var/opt/data/flat/APP/files:z