Все контейнеры могут иметь одинаковое монтирование тома. Это упрощенный способ обмена данными между Docker контейнерами.
Например, наш «сервер» может просто добавить число в файл:
#!/bin/bash
ID="$RANDOM"
while true ; do
echo $ID >> /shared.txt
sleep 1
done
Затем мы создадим Dockerfile
FROM ubuntu:18.04
COPY main.sh /main.sh
CMD ["bash", "/main.sh"]
И файл docker -compose.yml:
version: '3'
services:
one:
build: ./
volumes:
- ./shared.txt:/shared.txt
two:
build: ./
volumes:
- ./shared.txt:/shared.txt
Обратите внимание, как оба контейнера монтируют один и тот же файл. Каждый из них увидит одно и то же.
Запустите его с docker-compose up
, и в отдельном окне вы увидите следующий вывод файла shared.txt:
25277
24626
25277
24626
25277
24626
25277
24626
25277
Оба контейнера возможность записи в тот же файл. Вы можете легко распространить это на каталоги, чтобы иметь несколько кэшированных объектов.