有三个容器
容器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
答案 0 :(得分:7)
希望其中一种解释是正确的。
不,每个守护程序都需要一个单独的数据目录以避免冲突。您可以将多个数据目录放在共享卷中,但结果是多个完全独立的数据库。 - source
是的,可以允许多个容器连接到单个数据库容器,但不能通过共享卷。容器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)
我希望这会有所帮助。