当我在docker容器中启动nexus3时,出现以下错误消息。
$ docker run --rm sonatype/nexus3:3.8.0
Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log
Warning: Forcing option -XX:LogFile=/tmp/jvm.log
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to Permission denied
Unable to update instance pid: Unable to create directory /nexus-data/instances
/nexus-data/log/karaf.log (Permission denied)
Unable to update instance pid: Unable to create directory /nexus-data/instances
表明存在文件许可问题。 我正在使用Red Hat Enterprise Linux 7.5作为主机和最新的docker版本。
在另一台计算机(ubuntu)上运行正常。
问题发生在永久卷(/ nexus-data)中。但是,我没有挂载特定的卷,而是让docker使用匿名卷。
如果我比较两台计算机上的卷,我可以看到以下权限:
对于Red Hat,不起作用的属于root。
$ docker run --rm sonatype/nexus3:3.8.0 ls -l /nexus-data
total 0
drwxr-xr-x. 2 root root 6 Mar 1 00:07 etc
drwxr-xr-x. 2 root root 6 Mar 1 00:07 log
drwxr-xr-x. 2 root root 6 Mar 1 00:07 tmp
在ubuntu上,它工作于Nexus。 Nexus也是容器中的默认用户。
$ docker run --rm sonatype/nexus3:3.8.0 ls -l /nexus-data
total 12
drwxr-xr-x 2 nexus nexus 4096 Mar 1 00:07 etc
drwxr-xr-x 2 nexus nexus 4096 Mar 1 00:07 log
drwxr-xr-x 2 nexus nexus 4096 Mar 1 00:07 tmp
使用-u选项更改用户不是一种选择。
答案 0 :(得分:0)
我可以通过删除所有本地docker镜像来解决此问题:docker image prune -a
之后,它再次下载了图像,并且可以正常工作。 这很奇怪,因为我还比较了图像的指纹,它们是相同的。
答案 1 :(得分:0)
您应将正确的权限归属于永久卷所在的文件夹。
chmod u+wxr -R <folder of /nexus-data volumes>