Объемы докеров между 2 контейнерами - PullRequest
0 голосов
/ 24 сентября 2018

Допустим, у нас есть следующий файл docker-compose.yml

version: '3'

services:
  c1:
    build:
      context: .
      dockerfile: 1.Dockerfile
    volumes:
      - data:/folder
  c2:
    build:
      context: .
      dockerfile: 2.Dockerfile
    volumes:
      - data:/folder
    depends_on: 
      - c1

volumes: 
  data:

со следующим 1.Dockerfile

FROM ubuntu:latest
RUN mkdir -p /folder/
RUN touch /folder/1.txt
VOLUME /folder

и следующим 2.Dockerfile

FROM ubuntu:latest
RUN mkdir -p /folder/
RUN touch /folder/2.txt
VOLUME /folder

всякий раз, когда я делаю docker-compose up

, тогда делаю

docker-compose run --rm c2 bash
ls folder

или

docker-compose run --rm c1 bash
ls folder

я всегда получаю папку из c1, несмотря ни на что,не c2 должен перезаписывать c1 том

1 Ответ

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

Вы можете прочитать о поведении, которое вы описываете в документах здесь: https://docs.docker.com/storage/volumes/#populate-a-volume-using-a-container

Если вы запускаете контейнер, который создает новый том, как указано выше, и у контейнера есть файлы или каталогив каталоге, который нужно подключить (например, / app / вышеуказанный), содержимое каталога копируется в том.Затем контейнер монтирует и использует том, а другие контейнеры, использующие том, также имеют доступ к предварительно заполненному контенту.

Итак, ваш том инициируется данными из вашегоконтейнер c1, когда он создан.

Затем предварительно заполненный том монтируется как на c1, так и на c2.

Предварительное заполнение данных тома происходит во время создания.После этого том сопоставляется с теми данными, которые были заполнены при создании.

...