nexus3 docker容器中的权限问题

时间:2018-07-06 11:38:40

标签: docker nexus3

当我在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选项更改用户不是一种选择。

2 个答案:

答案 0 :(得分:0)

我可以通过删除所有本地docker镜像来解决此问题:docker image prune -a

之后,它再次下载了图像,并且可以正常工作。 这很奇怪,因为我还比较了图像的指纹,它们是相同的。

答案 1 :(得分:0)

您应将正确的权限归属于永久卷所在的文件夹。

chmod u+wxr -R <folder of /nexus-data volumes>