Docker 容器使用相同的 Nexus 卷?

Docker container to use same Nexus volume?

我运行以下:

mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data
chown -R 200 /Users/user.name/dockerVolume/nexus
docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

现在假设我将工件上传到 Nexus,并停止了 nexus 容器。

如果我想在端口 8082 上打开另一个 Nexus 容器,我要执行什么 Docker 命令 运行 这样 它使用与端口 8081 上相同的卷(所以当我运行这个容器时,它已经包含了我之前上传的工件

基本上,我希望两个 Nexus 容器使用相同的存储,这样如果我将工件上传到一个端口,另一个端口也会有它。

我运行这个命令,但似乎没有用:

docker run --name=nexus2 -p 8082:8081 --volumes-from nexus sonatype/nexus3

Bind mounts 与显式 Docker 卷相比,您正在使用的 "volume" 功能有限。

我相信 --volumes-from 标志仅适用于 Docker 管理的卷。

为了在带有此标志的容器之间共享卷,您可以 docker 使用 运行 命令为您创建一个卷。

示例:

$ docker run -d -p 8081:8081 --name nexus -v nexus-volume:/nexus-data sonatype/nexus3

上述命令将为您创建一个名为 nexus-volume 的 Docker 托管卷。您可以使用命令 $ docker volume inspect nexus-volume.

查看创建的卷的详细信息

现在,当您想要 运行 具有相同体积的第二个容器时,您可以根据需要使用 --volumes-from 命令。

这样做:

$ docker run --name=nexus2 -p 8082:8081 --volumes-from nexus sonatype/nexus3

应该给你你想要的行为。