繁体   English   中英

Docker 镜像挂载nexus的现有数据卷

[英]Docker image mounting the existing data volume for nexus

  1. 我在 nexus 3.17 上添加了新的存储库。 没有数据,只有回购。
  2. 创建的.bak 文件
  3. 为 nexus 创建了一个 docker 图像(称为 newimage)。

我在一个卷上有来自当前版本(3.3.1)的数据,我希望数据显示在新的关系中。 当我尝试在 docker 运行命令和 go 下连接到 nexus 时,没有显示新的存储库,但旧存储库的数据在那里。

docker run -d -p 8081:8081 --name nexus -v <local-docker-volume>:/nexus-data newimage

我用来创建图像的 Dockerfile

FROM sonatype/nexus3:3.17.0  
COPY path-to-bak-files/*.bak /nexus-data/restore-from-backup/

知道我做错了什么吗?

ps:如果我不清楚,请告诉我。

根据您的 dockerfile 您正在将内容复制到/nexus-data/restore-from-backup/但是在运行容器时,您将现有卷安装在/nexus-data上,这最终掩盖了文件系统上的/nexus-data目录在容器内(在创建图像时添加数据的地方)。

挂载操作中需要注意的重要一点是,如果您在文件系统 (FS) 的现有目录上挂载另一个磁盘/共享(在本例中为卷),则无法再从 FS 访问该目录。 因此,当您创建 docker 映像时,您向 /nexus-data/restore-from-backup/ 添加了一些文件,但是当您在 /nexus-data 上安装卷时,您将其安装在 FS 中的 dir 上,因此您看不到文件现在从你的FS。

要解决此问题,您可以执行以下操作:

  • 将数据添加到 dockerfile 中的不同位置,例如location1
  • 像您当前所做的那样创建带有卷挂载的容器
  • 使用 entrypoint OR 命令将文件从location1复制到/nexus-data/restore-from-backup/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM