Docker контейнер использовать тот же объем Nexus? - PullRequest
0 голосов
/ 24 августа 2018

Я запускаю следующее:

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.

Если я хочу открыть другой контейнер Nexus, на порту 8082какую команду Docker я запускаю так, что использует тот же том, что и на порту 8081 (поэтому, когда я запускаю этот контейнер, уже содержит артефакт , который я загружал ранее)

По сути, я хочу, чтобы оба контейнера Nexus использовали одно и то же хранилище , поэтому, если я загружу артефакт в один порт, он будет у другого порта.

Я запустилэта команда, но, похоже, она не работает:

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

1 Ответ

0 голосов
/ 24 августа 2018

Bind mounts , который вы используете как «том», имеет ограниченную функциональность по сравнению с явным томом Docker.

Я считаю, что флаг --volumes-from работает только с томами, управляемыми Docker.

Чтобы разделить том между контейнерами с этим флагом, вы можете сделать так, чтобы Docker создал для вас том с помощью команды запуска.

Пример:

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

Приведенная выше команда создаст для вас управляемый том Docker с именем nexus-volume. Вы можете просмотреть детали созданного тома с помощью команды $ docker volume inspect nexus-volume.

Теперь, когда вы хотите запустить второй контейнер с тем же объемом, вы можете использовать команду --volumes-from по своему желанию.

Делая так:

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

Должен дать вам желаемое поведение.

...