Том монтирует один файл или каталог прямо из контейнера A в контейнер B - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу знать, существует ли способ монтирования тома в каталог из CONTAINER-A (сборщик) в CONTAINER-B (хранение) прямо в той же сети докеров?

Я хочу сделать это черезdocker-compose файл

В настоящее время у меня есть следующее:

---
services:
  collector:
    hostname: "collector"
    container_name: "collector"
  volumes_from:
  - container:store
  store:
    hostname: "store"
    container_name: "store"
version: "2.1"

У меня есть каталог в Docker-контейнере (сборщик) с некоторыми файлами: /home/collector/data

Который я бы хотел, чтобы том был смонтирован в каталог где-нибудь в контейнере Docker: store

Любой способ убедиться, что мы смонтировали этот каталог, не копируя его в другое место посередине.

Я пробовал следующее, но безрезультатно:

-объемы

-объемы_от

Будетспасибо за помощь, спасибо!

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Единственные временные тома, когда-либо копирующие данные, это когда они являются именованными томами, инициализируемыми из образа.Кроме того, том всегда является прямым подключением файловой системы к источнику тома.Данные в томе не существуют внутри контейнера или образа, они только смонтированы там.

Чтобы смонтировать один и тот же том в два разных контейнера, рекомендуется использовать именованный том и указать оба контейнера нато же имя тома:

version: "2.1"
volumes:
  data:
services:
  collector:
    image: collector
    volumes:
    - data:/home/collector/data
  store:
    image: store
    volumes:
    - data:/home/collector/data

Обратите внимание, что именованные тома инициализируются по умолчанию, но только один раз для содержимого первого контейнера, начиная с тома.

Также обратите внимание, что файл монтируетсянетривиальны из-за того, как работают иноды Linux.Если вы изменяете файл и ищете, чтобы ваши изменения появлялись между контейнерами, попробуйте смонтировать каталог вместо файла.

0 голосов
/ 13 сентября 2018

Вероятно, лучше всего определить объем на верхнем уровне, а затем смонтировать его в каждый контейнер, примерно так:

---
version: "2.1"

volumes:
  foo: {}

services:

  collector:
    hostname: "collector"
    container_name: "collector"
    volumes:
    - foo:/path/inside/collector

  store:
    hostname: "store"
    container_name: "store"
    volumes:
    - foo:/path/inside/store

Это создаст вам объем данных, независимый от двух контейнеров. Если вы заново создадите контейнеры, данные останутся без изменений. Вы можете использовать docker volume <command> для взаимодействия с громкостью. В качестве альтернативы, простой способ уничтожить все это docker-compose down -v.

...