sonatype Nexus docker 卷错误

2024-02-01

我正在尝试使用 docker 安装 sonatype-nexus 并希望共享 docker/opt/sonatype-work与主机的 Nexus 存储库(Linux ubuntu 14.04)/opt/nexus.

我的泊坞窗文件:

FROM centos:6

MAINTAINER Marcel Birkner <[email protected] /cdn-cgi/l/email-protection>

USER root
# Update the system
RUN yum -y update; \
    yum clean all

##########################################################
# Install Java JDK, SSH and other useful cmdline utilities
##########################################################
RUN yum -y install java-1.7.0-openjdk-devel \
    which \
    telnet \
    unzip \
    openssh-server \
    sudo \
    openssh-clients \
    iputils \
    iproute \
    httpd-tools \
    wget \
    tar; \
    yum clean all
ENV JAVA_HOME /usr/lib/jvm/jre

##########################################################
# Install Nexus
##########################################################
RUN mkdir -p /opt/sonatype-nexus /opt/sonatype-work
RUN wget -O /tmp/nexus-latest-bundle.tar.gz http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
RUN tar xzvf /tmp/nexus-latest-bundle.tar.gz -C /opt/sonatype-nexus --strip-components=1
RUN useradd --user-group --system --home-dir /opt/sonatype-nexus nexus

ADD nexus.xml /opt/sonatype-work/nexus/conf/nexus.xml

RUN chown -R nexus:nexus /opt/sonatype-work /opt/sonatype-nexus

ENV NEXUS_WEBAPP_CONTEXT_PATH /nexus
RUN echo "#!/bin/bash" > /opt/start-nexus.sh
RUN echo "su -c \"/opt/sonatype-nexus/bin/nexus console\" - nexus" >> /opt/start-nexus.sh
RUN chmod +x /opt/start-nexus.sh
VOLUME /opt/sonatype-work
CMD ["/opt/start-nexus.sh"]
EXPOSE 8081

当我构建此图像时(构建成功):

docker build -t sonatype/nexus .

然后我通过这个命令运行它:

docker run -d -p 8081:8081 --name nexus -v /opt/nexus:/opt/sonatype-work sonatype/nexus

它立即开始并立即停止 错误显示(docker logs nexus):

nexus_1 | jvm 1    | Caused by: java.nio.file.AccessDeniedException: /opt/sonatype-work/nexus
nexus_1 | jvm 1    |    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:383) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at java.nio.file.Files.createDirectory(Files.java:630) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:734) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at java.nio.file.Files.createDirectories(Files.java:720) ~[na:1.7.0_99]
nexus_1 | jvm 1    |    at org.sonatype.nexus.util.file.DirSupport.mkdir(DirSupport.java:146) ~[na:na]
nexus_1 | jvm 1    |    at org.sonatype.nexus.util.file.DirSupport.mkdir(DirSupport.java:162) ~[na:na]
nexus_1 | jvm 1    |    at org.sonatype.nexus.webapp.WebappBootstrap.contextInitialized(WebappBootstrap.java:115) ~[na:na]
nexus_1 | jvm 1    |    ... 16 common frames omitted
nexus_1 | wrapper  | <-- Wrapper Stopped

如果我删除了VOLUME /opt/sonatype-nexus从 dockerfile 来看它工作正常。

你知道什么可能导致这个问题吗?以及如何解决它?


如果您在容器中绑定挂载主机目录,则主机目录中的文件和目录优先并挂载到容器映像中已存在的文件上。换句话说,它们“掩盖”了容器下面的东西。

绑定挂载保留主机上存在的目录的权限,如果主机上不存在目录,Docker 将使用以下命令创建它:root:root作为所有者。

看着useradd nexus在你的 Dockerfile 中,我怀疑start-nexus.sh使用该用户运行 nexus,因此它可能没有绑定安装目录(由 root 拥有)的权限。您可以通过以下方式修复此问题chowning数字 uid/gid 的目录nexus容器内。

为了得到uid / gid该用户以交互方式启动容器;

docker run -it --rm sonatype/nexus bash

在该 shell 内请求 uid/gid:

id nexus

这会给你类似的东西:

uid=123(nexus) gid=456(nexus) groups=456(nexus)

现在退出容器(exit),并使用 uid/gid chown 主机上的目录;

sudo chown -R 123:456 /opt/nexus

我注意到的一些事情

看起来您正在构建自己的自定义版本的 sonatype nexus 映像,但使用与官方映像相同的名称(sonatype/nexus)。我建议不要这样做,并给它你自己的名字(例如mycompany/nexus);这可以防止混乱,也可以防止您自己的混乱 如果有人运行,图像将被官方图像覆盖docker pull sonatype/nexus.

有什么理由不使用官方图片吗?一般来说,建议使用官方映像,因为它们是由软件维护者(在本例中为 sonatype)维护的,因此应该为您提供该软件的最新(和维护)版本;https://hub.docker.com/r/sonatype/nexus/ https://hub.docker.com/r/sonatype/nexus/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sonatype Nexus docker 卷错误 的相关文章

随机推荐

  • 使用 Kusto 获取每组的前 1 行

    我有一个表 我想使用 Kusto 查询语言获取每个组的最新条目 这是表格 文档状态日志 ID DocumentID Status DateCreated 2 1 S1 7 29 2011 3 1 S2 7 30 2011 6 1 S1 8
  • 发送电子邮件意向

    Intent intent new Intent Intent ACTION SEND intent setType text html intent putExtra Intent EXTRA EMAIL email protected
  • $lookup 具有相同的集合

    我是 MongoDB 新手 所以我不确定我的问题表述是否正确 我有一个集合 其中的数据如下所示 id ObjectId 66666 Id 994 PostType 1 AnswerId 334 CreationDate ISODate 19
  • 退出钛合金中的应用程序(iOS)

    iOS 相当于 win close var activity Titanium Android currentActivity activity finish Thanks 没有 钛 此外 苹果明确不鼓励这样做 iOS 应用程序从不显示关闭
  • Django模板,如何制作一个选择预定义值的下拉框?

    我试图创建一个下拉列表框 其中所选值等于从模板值传递的值 但没有成功 谁能看一下并告诉我我做错了什么
  • 具有插入曲线和透明背景的 CSS 形状

    我需要创建一个像这张图片一样的 CSS 形状 请检查这个fiddle http jsfiddle net KB2nY 我的工作 我已经创造了类似的东西 但我无法给它一条曲线 shape border left 70px solid tran
  • 停止执行 PerformSelector:

    非常基本的问题 self performSelector selector startSequence withObject nil afterDelay 1 0 但是 有没有办法在调用后阻止它呢 谢谢你的帮助 迪斯科 你要 NSObjec
  • AttributeError:既没有与关联的“InstrumentedAttribute”对象也没有“Comparator”对象

    我有一个表定义为 class Results db Model tablename results event id db Column db Integer db ForeignKey Events id primary key True
  • Visual Studio 中的代码指标计算

    以下代码指标计算的首选分数范围是多少 可维护性指标 圈复杂度 传承深度 类耦合 理论上的最佳值为 可维护性指数 100 数值越高 可维护性越好 圈复杂度 1 代码可以采用的不同路径的数量 继承深度 1 继承树中该类定义之上的类定义数量 不包
  • 如何监听 Fennec 扩展的页面加载?

    我正在为 Fennec 开发一个简单的扩展 它必须向每个加载的页面添加特殊的 HTML 元素 我创建了这个简单的overlay js var MyAddon onLoad function aEvent var appcontent doc
  • 是否有命名实体框架迁移的最佳或推荐实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用实体框架代码优先迁移时 是否有为每个迁移选择名称的最佳实践 例如 每个名称可能包含版本号或对模型所做的更改或两者 Add Migration
  • Python:os.stat().st_size 给出的值与 du 不同

    我正在创建一个实用程序 它将遍历目录并获取所有目录的子目录和文件的大小并存储该值 但是 尺寸计算不正确 这是我的类 它自动递归所有子目录 class directory Class that automatically traverses
  • 如何链接到 django-cms 中未翻译页面的语言主页?

    在 django cms 中 我有两种语言 其中一页荷兰语目前尚未翻译成英语 查看此页面时 语言选择器不提供英文翻译的链接 因为没有 但是 我想将链接链接到英文翻译以链接到主页 或其他一些英文页面 如果有意义的话 现在我可以自己创建所需的模
  • SQL添加一个新列,其值只能在几个固定选项中

    我想在我的数据表中添加一个带有 SQL 的新列 如下所示 CREATE TABLE brands Brand varchar 255 Contact varchar 150 Address varchar 255 Location varc
  • ImageScience 在更新 Rails 3 时中断

    我有一个工作 并且工作良好 的 ImageScience 安装 它对图像的各种尺寸进行了一些简单的调整大小 然后将它们复制到不同的目录 一切都很简单 这个小而简单的例程是在 rake 任务中 更新到 Rails 3 后 这个 rake 任务
  • 表单重置按钮是否会触发选择元素的 onChange 事件?

    我有一个带有一些选择元素的表单onChange附加到它们的事件 我希望即使有人单击表单重置按钮也能触发该事件 我的问题是 重置表单是否会触发选择元素onChange event 这是 jQuery 中的一个简单示例
  • 为什么 Time.strptime() 返回当前日期?

    向私有 无公共文档 API 发出 GET 请求会返回 JSON 格式的数据 我感兴趣的值是日期 它返回 ASP NET JSON 日期格式的日期 它看起来是这样的 AanmeldDatum Date 1406675114000 0200 还
  • 如何测试JavaMailSender?

    我的问题不大 我创建了 MailService 来发送邮件 当我运行程序时 它有效 我拥有的所有可通过电子邮件发送的属性resources application properties 我在用着spring boot starter mai
  • 访问 Rcpp 中的命名列表元素

    我想在 Rcpp 中按名称访问命名列表元素 In R gt b list bgroups c 1 1 1 1 1 0 0 0 0 0 gt b bgroups 1 1 1 1 1 1 0 0 0 0 0 然后当尝试在 Rcpp 中访问它时
  • sonatype Nexus docker 卷错误

    我正在尝试使用 docker 安装 sonatype nexus 并希望共享 docker opt sonatype work与主机的 Nexus 存储库 Linux ubuntu 14 04 opt nexus 我的泊坞窗文件 FROM