Обмен данными между контейнерами
Одним из важных преимуществ томов Docker (volumes) является возможность обмена данными между контейнерами. Давайте создадим еще один контейнер, который будет использовать тот же том:
docker run -d --name another_container -v my_data:/app/shared_data ubuntu:latest sleep infinity
Эта команда очень похожа на ту, которую мы использовали ранее, но мы даем контейнеру другое имя и монтируем том в другой путь внутри контейнера.
Теперь давайте проверим, может ли этот новый контейнер получить доступ к данным, которые мы создали ранее:
docker exec another_container cat /app/shared_data/test.txt
Вы должны увидеть то же сообщение "Hello from Docker volume", которое мы записали ранее. Это показывает, что оба контейнера имеют доступ к тем же данным.
Давайте добавим еще данные из этого нового контейнера:
docker exec another_container sh -c "echo 'Data from another container' >> /app/shared_data/test.txt"
Эта команда добавляет новую строку в наш файл test.txt
.
Теперь, если мы проверим содержимое файла из любого из контейнеров, мы должны увидеть обе строки:
docker exec my_container cat /app/data/test.txt
В выводе вы должны увидеть как "Hello from Docker volume", так и "Data from another container".
Это демонстрирует, как тома Docker можно использовать для обмена данными между контейнерами, что чрезвычайно полезно для многих приложений.