Это против того, для чего предназначен Докер. У вас должно быть несколько контейнеров, использующих один сервис каждый (здесь mariadb). Но если вы хотите, чтобы они отражали одно и то же состояние, вы должны использовать один из методов, предоставляемых базой данных (для mariadb вы можете найти множество в официальных документах здесь )
Одним из нативных механизмов, предоставляемых MariaDB, является master-slave replication
, хорошо объясненный в официальном документе здесь . Также еще один эффективный механизм parallel replication
объяснен и приведен в официальной документации здесь
Эти механизмы требуют небольшой настройки. Я не буду перечислять весь процесс, так как он хорошо объяснен в официальном документе с дополнительными примечаниями по безопасности и ремонтопригодности.
Пример для другой БД - база данных PostgreSQL может плавно запускаться во многих контейнерах и легко сбалансироваться по нагрузке, если вы разделяете том между теми экземплярами, которые совместно используют pg_data
базы данных (каталог pg_data
внутри volume
делится между контейнерами). Подобные механизмы могут применяться к MariaDB.
Но Если вы действительно настаиваете на наличии нескольких служб в одном контейнере , вы можете написать сценарий bash, запускающий несколько баз данных, и выполнить этот сценарий с помощью command
в Dockerfile или docker-compose.