Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置docker与同一主机上的非停靠服务对话_Docker - Fatal编程技术网

如何设置docker与同一主机上的非停靠服务对话

如何设置docker与同一主机上的非停靠服务对话,docker,Docker,我正在尝试设置一个docker容器(称之为docker client),它将访问MySQL服务器上的MySQL服务器:3306mysql服务器与docker客户端所在的主机相同 我想我可以使用链接和大使模式来实现这一点,所以我尝试了以下方法: mysql-server$ docker run -d --name mysql_ambassador -e MYSQL_PORT_3306_TCP=tcp://mysql-server:3306 svendowideit/ambassador 然后我像

我正在尝试设置一个docker容器(称之为
docker client
),它将访问
MySQL服务器上的MySQL服务器:3306
mysql服务器
docker客户端
所在的主机相同

我想我可以使用链接和大使模式来实现这一点,所以我尝试了以下方法:

mysql-server$ docker run -d --name mysql_ambassador -e MYSQL_PORT_3306_TCP=tcp://mysql-server:3306 svendowideit/ambassador
然后我像这样启动了我的客户:

docker run --link mysql_ambassador:mysql-server -i -t ubuntu /bin/bash
不幸的是,尝试在客户端上运行mysql会出现错误:

docker-client# mysql -h mysql-server
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

有没有办法让客户端保持停靠状态,让服务器保持非停靠状态,让MySQL服务器继续在标准端口3306上运行?

在启动大使容器时,尝试在环境变量
MySQL\u port\u 3306\u TCP
中使用主机的IP,而不是主机名
MySQL server

但是,如果您只想连接到运行docker容器的同一主机上的服务,可以使用主机的IP(不需要大使),例如


如果需要使用主机名,有几个选项:

1) 将dns与docker IP一起使用。只需使用--dns选项运行即可

2) 您可以使用名称和别名: 名为
docker run-i-t--name test1 test\u docker/bin/bash
然后使用--link选项运行下一个容器
run-i-t--link=test1:test\u主机名test\u docker/bin/bash

在该名称之后,将与适当的ip关联:

`root@1b6a491653e2:/# cat /etc/hosts
172.17.45.232   1b6a491653e2
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.45.230   test_hostname`

不幸的是,我的全部目标是使用主机名。当我在本地运行停靠服务时,mysql服务器将位于同一主机上。当我在云中运行它时,mysql服务器将指向同一主机或单独的云服务器。
`root@1b6a491653e2:/# cat /etc/hosts
172.17.45.232   1b6a491653e2
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.45.230   test_hostname`