[英]Docker container access to localhost in parent server
我的docker容器没什么问题。 我试图通过curl从容器访问我的父服务器localhost,以便在elasticsearch中执行查询。 Elastic在父服务器上仅在本地区域工作。
curl http://127.0.0.1:9200
curl: (7) Failed to connect to 127.0.0.1 port 9200: Connection refused
容器ip为172.17.0.3,我无法从父服务器ping容器
它是我的docker构建
cd ./api_docker
container="$(docker ps | grep "visitors/api:gniewoy" | cut -d " " -f1)"
git reset --hard HEAD &&
git pull &&
composer update &&
docker build -t visitors/api:gniewoy . &&
cd ../
docker kill $container &&
docker run -p 705:80 --env-file docker_api_env -d /etc/docker/
组装完成后,阀芯在705端口上可以正常工作,但这只是弹性问题。 以下是我的同伴的死亡故事
"NetworkSettings": {
"Bridge": "",
"SandboxID": "",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"443/tcp": null,
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "705"
}
]
},
"SandboxKey": "",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "",
"EndpointID": "",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": ""
}
}
}
我正在od Debian 8上工作。谢谢
在主机上达到环回的唯一方法是在同一环回网络上。 默认情况下,docker将在您自己的隔离网络名称空间中运行您的容器,该名称空间包括其自己的单独环回接口。 要与主机的回送(以及主机的其余网络堆栈)一起运行,请调用:
docker run --net host ...
使用docker-compose.yml,您将在相关服务中包括以下部分:
network_mode: "host"
如果您可以将弹性服务器配置为在所有接口上进行侦听,那么从容器方面来看会更好(尽管这可能会带来其他安全问题)。 然后,您将从容器中连接到主机上的非回送ip。
您的配置必须是/etc/elasticsearch/elasticsearch.yml
network :
host : 127.0.0.1 //or ifconfig (ex eth0 : IP)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.