Docker:将mysql数据库分割成不同的数据卷容器?
我有以下的Docker容器:
-
web
(nginx) -
db
(mysql)
web
容器链接到db
容器。 所有标准的东西。
对于数据持久性,我想采取数据卷容器方法。
我希望能够使用这两个容器作为主应用程序容器来运行多个网站(从技术上来说, web
容器运行着面向用户的主要应用程序,而db
在后面)。
假设我在mysql中分别使用数据库A
, B
和C
siteA
, siteA
和siteC
。
我希望能够将这些站点的数据库数据分为3个不同的数据卷容器( dataB
, dataB
, dataC
)以实现可移植性,并将它们集中在一个部署中(一台运行web
, db
, dataB
, dataC
, dataB
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只移动到另一个主机,这将有所帮助。