elasticsearch,networking,Linux,Docker,elasticsearch,Networking" /> elasticsearch,networking,Linux,Docker,elasticsearch,Networking" />

Linux 对父服务器中本地主机的Docker容器访问

Linux 对父服务器中本地主机的Docker容器访问,linux,docker,elasticsearch,networking,Linux,Docker,elasticsearch,Networking,我的docker容器有点问题。为了在elasticsearch中执行查询,我试图通过curl从容器访问我的父服务器localhost。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 build cd ./api_docke

我的docker容器有点问题。为了在elasticsearch中执行查询,我试图通过curl从容器访问我的父服务器localhost。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 build

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/
建成后,continer在端口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": ""
                }
            }
        }

我在Debian8工作。谢谢

您需要通过-p标签共享端口,类似于
-p 9200:9200

这里,第一个9200是内部端口,第二个是容器端口


查看一下

您需要共享port by-p标签,类似于
-p 9200:9200

这里,第一个9200是内部端口,第二个是容器端口


看一看

在主机上实现环回的唯一方法是在同一个环回网络上。默认情况下,docker将在其独立的网络名称空间中运行容器,该名称空间包括其独立的环回接口。要使用主机的环回(以及主机的其余网络堆栈)运行,您可以调用:

docker run --net host ...
使用docker-compose.yml,您将包括有关服务的以下部分:

network_mode: "host"

如果您可以将弹性服务器配置为侦听所有接口,那么从容器端进行侦听会更好(尽管这可能会引入其他安全问题)。然后,您将从容器连接到主机上的非环回ip。

在主机上实现环回的唯一方法是位于同一环回网络上。默认情况下,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)

您的配置需要是/etc/elasticsearch/elasticsearch.yml

network :
    host : 127.0.0.1  //or ifconfig (ex eth0 : IP)

弹性监听是在所有接口(0.0.0.0)上,还是仅在环回(127.0.0.1)上?弹性监听是在127.0.0.1上,弹性监听是在所有接口(0.0.0.0)上,还是仅在环回(127.0.0.1)上?弹性监听是在127.0.0.1上?我这样尝试过,但在docker容器中仍然无法实现弹性监听。我甚至尝试使用主机作为docker ip 172.17.0.3。同样,我使用了
network.bind_host:127.0.0.1//或172.17.0.3
@gniewj您需要更改配置日志存储配置以放置elasticsearch,而不是127.0.0.1。这个问题(docker elastic..)在这里得到了解决:我尝试过这样做,但在docker容器中仍然无法访问elastic。我甚至尝试使用主机作为docker ip 172.17.0.3。同样,我使用了
network.bind_host:127.0.0.1//或172.17.0.3
@gniewj您需要更改配置日志存储配置以放置elasticsearch,而不是127.0.0.1此问题(docker elastic..)在这里得到解决:我使用共享端口9200构建了容器,但当我尝试运行elastic时,然后是线程“main”BindHttpException[绑定到[9200]失败]中的一些问题
异常。Elastic无法运行,因为端口9200已在使用共享端口9200的内置容器中,但当我尝试运行Elastic时,线程“main”BindHttpException[绑定到[9200]失败]中出现了一些问题
异常。弹性无法运行,因为端口9200已在使用中