可以在一个mysql数据库容器上运行两个docker容器实例吗?

时间:2015-01-06 02:39:22

标签: mysql docker

有三个容器

容器A:网络服务器 容器B:复制容器A的Web服务器 容器Z:容器A的mysql数据存储容器

我可以使用Container Z作为mysql数据存储区同时运行容器A和B吗?它会破坏mysql数据存储吗?

以下容器的运行时间:

容器Z: docker run --name mysql_datastore -it busybox:mysql_datastore true

容器A: docker run -it -p 80:80 --volumes-from mysql_datastore --name webservera -h webservera centos:webseverwithmysql / bin / bash

容器B: docker run -it -p 81:81 --volumes-from mysql_datastore --name webserverb -h webserverb centos:webseverwithmysql / bin / bash

1 个答案:

答案 0 :(得分:7)

希望其中一种解释是正确的。

我可以在共享单个数据卷的不同容器中运行多个mysql守护进程吗?

不,每个守护程序都需要一个单独的数据目录以避免冲突。您可以将多个数据目录放在共享卷中,但结果是多个完全独立的数据库。 - source

我可以运行多个 connect 的容器到一个mysql数据库容器吗?

是的,可以允许多个容器连接到单个数据库容器,但不能通过共享卷。容器Z将运行mysql守护程序,其他容器可以通过tcp套接字连接到它。 official mysql repo自述文件包含入门步骤:

首先启动Container Z.

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql

然后使用以下内容运行要连接到数据库的其他容器:

docker run --name webservera --link some-mysql:mysql -d application-that-uses-mysql

Docs for the --link flag。容器链接为链接别名添加主机文件条目,因此您不必手动查找地址。您的网络服务器的数据库配置看起来像这样

jdbc:mysql://address=(protocol=tcp)(host=mysql)(port=3306)(user=root)(password=mysecretpassword) 

我希望这会有所帮助。