当试图将卷映射到tomcat容器中的主机时,我在CentOS 7上遇到了一个问题。这发生在公共tomcat图像以及我创建的图像上(基于centos而不是debian)。CentOS 7上的Docker卷
实例化一个容器如下就会成功: 搬运工运行 - 它-d tomcat的:8
实例化一个容器如下会成功,但随着日志中的错误和日志不会被写入到主机: 搬运工运行 - 它-d -v在/ usr /本地/ Tomcat的:在/ usr /本地/ Tomcat的Tomcat的:8
[[email protected] tomcat]$ dkr run -it -d -v
/usr/local/tomcat:/usr/local/tomcat tomcat:8
34075701b1436f83a24212170b4d2113ae698df244c449203b1c9af9814485c9
[[email protected] tomcat]$ dkr ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
34075701b143 tomcat:8 "catalina.sh run" 5 seconds ago Up 4 seconds 8080/tcp sharp_einstein
[[email protected] tomcat]$ dkr logs sharp_einstein
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
java.util.logging.ErrorManager: 4
java.io.FileNotFoundException: /usr/local/tomcat/logs/catalina.2015-03-31.log (Permission denied)
...
31-Mar-2015 15:32:04.088 SEVERE [Catalina-startStop-1] org.apache.catalina.startup.HostConfig.start Unable to create directory for deployment: /usr/local/tomcat/conf/Catalina/localhost
31-Mar-2015 15:32:04.097 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/ROOT
31-Mar-2015 15:32:04.468 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/ROOT] for context []
31-Mar-2015 15:32:05.966 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/ROOT is unusable.
31-Mar-2015 15:32:06.042 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 1,929 ms
31-Mar-2015 15:32:06.043 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/docs
31-Mar-2015 15:32:06.093 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/docs] for context [/docs]
31-Mar-2015 15:32:06.216 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/docs is unusable.
31-Mar-2015 15:32:06.219 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 176 ms
31-Mar-2015 15:32:06.220 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/examples
31-Mar-2015 15:32:06.272 WARNING [localhost-startStop-1] org.apache.catalina.core.StandardContext.postWorkDirectory Failed to create work directory [/usr/local/tomcat/work/Catalina/localhost/examples] for context [/examples]
31-Mar-2015 15:32:07.952 SEVERE [localhost-startStop-1] org.apache.jasper.EmbeddedServletOptions.<init> The scratchDir you specified: /usr/local/tomcat/work/Catalina/localhost/examples is unusable.
[[email protected] tomcat]$
Exec'ing到容器,并试图也写失败。
[[email protected] tomcat]$ dkr ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
34075701b143 tomcat:8 "catalina.sh run" 5 minutes ago Up 5 minutes 8080/tcp sharp_einstein
[[email protected] tomcat]$ dkr exec -it sharp_einstein /bin/bash
[email protected]:/usr/local/tomcat# ls -l
total 96
-rw-rw-r--. 1 root root 56977 Jan 23 11:59 LICENSE
-rw-rw-r--. 1 root root 1397 Jan 23 11:59 NOTICE
-rw-rw-r--. 1 root root 6779 Jan 23 11:59 RELEASE-NOTES
-rw-rw-r--. 1 root root 16204 Jan 23 11:59 RUNNING.txt
drwxrwxr-x. 2 root root 4096 Mar 31 12:14 bin
drwxrwxr-x. 2 root root 4096 Jan 23 11:59 conf
drwxrwxr-x. 2 root root 4096 Mar 31 12:14 lib
drwxrwxr-x. 2 root root 6 Jan 23 11:56 logs
drwxrwxr-x. 2 root root 29 Mar 31 12:14 temp
drwxrwxr-x. 7 root root 76 Jan 23 11:57 webapps
drwxrwxr-x. 2 root root 6 Jan 23 11:56 work
[email protected]:/usr/local/tomcat# cd logs
[email protected]:/usr/local/tomcat/logs# echo "test" > test.log
bash: test.log: Permission denied
我已经在CentOS创建的PostgreSQL容器的实例和成功的映射和使用量,通过创建一个数据库,停止实例,然后重新运行容器验证。
[[email protected] ~]$ uname --all
Linux eagle2 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]$
dkr是docker的别名,我创建了一个docker组并将自己添加到该组中,以消除对sudo的需求。
卷映射似乎在ubuntu上正常工作。在CentOS上,我尝试了两个软件包版本(如下所示),并将它更新到1.5。
[[email protected] ~]$ dkr --version
Docker version 1.3.2, build 39fa2fa/1.3.2
[[email protected] ~]$
如何使卷在CentOS上正常工作?
格雷格,感谢 - 我认为你是在正确的我有一个权限问题,而不是体积问题。也就是说,您建议的修复方法无效。 '$ ll/usr/local/tomcat drwxrwxrwx。2 root root 6 Apr 6 09:23日志 $ dkr运行-it -d -v/usr/local/tomcat/logs:/ usr/local/tomcat/logs tomcat:8 5661653ac2 $ dkr logs 5661653ac2 使用CATALINA_BASE :/ usr/local/tomcat ... java.io.FileNotFoundException:/usr/local/tomcat/logs/catalina.2015-04-06.log(Permission denied)' 我想知道是否有问题与filesytem:xfs? – 2015-04-06 13:49:29
我在主机文件系统和容器ID之间的用户标识映射和许可方面遇到了很多麻烦。我想这就是你在这里所做的。很难阅读注释输出...对不起...在容器中,你可以触摸/usr/local/tomcat/logs/catalina.2015-04-06.log'?该文件是否已经存在权限错误?或者,是Java创建它与错误的许可? (umask设置错误)? – Greg 2015-04-06 15:26:19
对不起,在评论区块中格式化很困难。 在日志文件夹中没有任何东西存在,我可以在那里触摸或创建一个文件。在容器中什么都不存在,我也无法创建任何东西。触摸尝试返回'权限被拒绝'。该容器中显示的该文件夹(日志)的权限是777,所有者和组都是root。 Umask是0022. – 2015-04-08 13:16:54