目前,我正在尝试设置三个不同的坞容器(php和apache),并让它们侦听我的sql服务器正在运行的第四个容器。有人知道如何才能让mysql容器听其他三个容器吗?
发布于 2016-12-28 21:49:14
如果容器连接到同一个自定义码头网络,则它们可以相互交互。网络提供“隔离”(也就是说,只有连接到同一网络的容器才能交互),如果您已经给容器取了一个名称,容器就可以使用容器名作为主机名找到对方。
虽然您可以使用遗留--link选项( --link )实现类似的结果
例如;
为您的应用程序创建一个称为“私有网络”的网络。
docker network create private-net启动一个名为"db“的MySQL容器,并告诉docker将其连接到”私有网络“网络。请注意,其他容器不需要“发布”端口3306才能连接到它;如果您希望对端口进行公开访问(例如,使您的web服务器可以从internet访问),则只应该发布(-p)端口。
docker run -d --name=db --net=private-net -e MYSQL_ROOT_PASSWORD="secret" mysql启动应用程序容器。为了在这里演示这个原理,我们也为此使用了一个mysql容器,但是使用一个shell会话交互地启动它,以展示如何连接到数据库;
docker run -it --name=app --net=private-net mysql bash
root@fb5379f80508:/# # we're in the 'app' container
root@fb5379f80508:/# # connect to the mysql container, using it's name ('db') as hostname
root@fb5379f80508:/# mysql -h db -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \q
Bye
root@fb5379f80508:/# # exiting the container
root@fb5379f80508:/# exit
exit您可以在运行时使用docker network connect和docker network disconnect命令从网络连接/断开容器。容器可以连接到多个网络,如果您有一个由多个应用程序共享的服务,则该网络非常有用。
有关Docker网络的更多信息,请阅读此处的文档:使用网络命令
发布于 2016-12-28 19:51:10
您可以在其他容器的--link mysql:mysql中执行docker run (apache,php.)并且它可以作为mysql在容器内使用。类似于:
docker run -d -p 3306:3306 --name mysql my/mysql
docker run -d -p 8080:8080 --name apache --link mysql:mysql my/apache希望能帮上忙。
https://stackoverflow.com/questions/41366452
复制相似问题