Docker:将mysql数据库分割成不同的数据卷容器?

我有以下的Docker容器:

  • web (nginx)
  • db (mysql)

web容器链接到db容器。 所有标准的东西。

对于数据持久性,我想采取数据卷容器方法。

我希望能够使用这两个容器作为主应用程序容器来运行多个网站(从技术上来说, web容器运行着面向用户的主要应用程序,而db在后面)。

假设我在mysql中分别使用数据库ABC siteAsiteAsiteC

我希望能够将这些站点的数据库数据分为3个不同的数据卷容器( dataBdataBdataC )以实现可移植性,并将它们集中在一个部署中(一台运行webdbdataBdataCdataB dataC链接适当)在需要的时候。

有没有办法将单独的mysql数据库分区到他们自己的数据卷容器的便携性? AFAIK,mysql把它所有的数据库数据以某种forms存储在/var/lib/mysql中,而这些数据对于mysql所存储的数据库来说是不透明的。

例如,如果将存储在mysql中的不同数据库映射到已知目录(在本例中为/var/lib/mysql/A/var/lib/mysql/B/var/lib/mysql/C 这样,所有我将不得不坚持这些目录,并将其安装在db容器中。 我不认为这是事实。

为什么不直接运行db容器的多个实例呢? 根据需要映射目录。

 docker run -d -v /var/lib/mysql/A:/var/lib/mysql --name dbA my_docker/my_awesome_mysql docker run -d -v /var/lib/mysql/B:/var/lib/mysql --name dbB my_docker/my_awesome_mysql docker run -d -v /var/lib/mysql/C:/var/lib/mysql --name dbC my_docker/my_awesome_mysql 

如果您需要将dbA只移动到另一个主机,这将有所帮助。