在 Nexus Docker 中挂载主机目录时出错

Anu*_*nay 4 docker nexus3

我正在使用以下命令来运行我的容器

docker run -d -p 9001:8081 --name nexus -v /Users/user.name/dockerVolume/nexus:/nexus-data sonatype/nexus3
Run Code Online (Sandbox Code Playgroud)

容器启动并立即失败。使用以下日志

mkdir:无法创建目录“../sonatype-work/nexus3/log”:权限被拒绝

mkdir:无法创建目录“../sonatype-work/nexus3/tmp”:权限被拒绝

Java HotSpot(TM) 64 位服务器 VM 警告:无法打开文件 ../sonatype-work/nexus3/log/jvm.log 由于没有这样的文件或目录

我正在按照此链接进行设置,我已授予对 nexus 目录的上述权限。

我也尝试了以下SO 链接,但这也没有帮助我。我仍然遇到同样的错误。

Docker 版本 17.12.0-ce-mac47 (21805)

[编辑] 我确实对主机上的 nexus 文件夹的所有权进行了更改

sudo chown -R 200 ~/dockerVolume/nexus
Run Code Online (Sandbox Code Playgroud)

4lb*_*rto 9

在我的 ubuntu 服务器中,我必须执行:

chown -R 200:200 path/to/directory
Run Code Online (Sandbox Code Playgroud)

不仅是 200,而且是200:200


小智 6

如果你有这个问题试图运行Kubernetes集群Nexus3里面,你应该设置UID initContainers。只需将其添加到您的规范中

initContainers:
- name: volume-mount-hack
  image: busybox
  command: ["sh", "-c", "chown -R 200:200 /nexus-data"]
  volumeMounts:
  - name: <your nexus pvc volume name>
    mountPath: /nexus-data
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 1

Dockerfile在 repo 中可用sonatype/docker-nexus3

安装卷记录为

将主机目录装载为卷。

这是不可移植的,因为它依赖于主机上具有正确权限的现有目录。但是,在需要将该卷分配给某些特定底层存储的某些情况下,它可能很有用。

$ mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data
$ docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3
Run Code Online (Sandbox Code Playgroud)

所以不要忘记在你之前docker run

chown -R 200 /Users/user.name/dockerVolume/nexus
Run Code Online (Sandbox Code Playgroud)