Windows Docker контейнер Networking to Postges на хосте (windows 10) - PullRequest
0 голосов
/ 09 июля 2020

Хорошо .. Извините, что засоряю этот сайт бесконечными вопросами. У меня есть REST API. NET, который работает в DOCKER. (Windows контейнер) Но в тот момент, когда я пытаюсь подключиться к Postgres на моем хосте, я не могу подключиться. Я не могу подключиться, время ожидания запроса истекло, соединение было активно отклонено ... Я уже тысячу раз изменял строку подключения, пытаясь заставить это работать.

когда я смотрю на docker сети, получается :

C:\Windows\SysWOW64>docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
4c79ae3895aa        Default Switch      ics                 local
40dd0975349e        nat                 nat                 local
90a25f9de905        none                null                local

когда я проверяю свой контейнер, он говорит, что использует NAT для сети.

C:\Windows\SysWOW64>docker network inspect nat
[
    {
        "Name": "nat",
        "Id": "40dd0975349e1f4b334e5f7b93a3e8fb6aef864315ca884d8587c6fa7697dec5",
        "Created": "2020-07-08T15:02:17.5277779-06:00",
        "Scope": "local",
        "Driver": "nat",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "windows",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.22.96.0/20",
                    "Gateway": "172.22.96.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0d2dc2658a9948d84b01eaa9f5eb5a0e7815933f5af17e5abea17b82a796e1ec": {
                "Name": "***MyAPI***",
                "EndpointID": "3510dac9e5c5d49f8dce18986393e2855008980e311fb48ed8c4494c9328c353",
                "MacAddress": "00:15:5d:fc:4f:8e",
                "IPv4Address": "172.22.106.169/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.windowsshim.hnsid": "3007307C-49DC-4DB5-91C8-0E05DAC8E2B6",
            "com.docker.network.windowsshim.networkname": "nat"
        },
        "Labels": {}
    }
]

Когда я смотрю на свои сетевые свойства моего хоста, я вижу:

Name:   vEthernet (nat)
Description:    Hyper-V Virtual Ethernet Adapter #2
Physical address (MAC): 00:15:5d:fc:43:56
Status: Operational
Maximum transmission unit:  1500
IPv4 address:   172.22.96.1/20
IPv6 address:   fe80::d017:d598:692a:2e67%63/64
DNS servers:    fec0:0:0:ffff::1%1, fec0:0:0:ffff::2%1, fec0:0:0:ffff::3%1
Connectivity (IPv4/IPv6):   Disconnected

Я предполагаю, что NAT в сети docker связан с этим сетевым адаптером Hyper v. оба имеют 172.22.96.1 в качестве IP-адреса

строка подключения:

Server = 172.22.96.1; Port = 5433; Database = QuickTechAssetManager; Uid = QuickTech; Pwd = password;

ТАК ... когда я пытаюсь подключиться от контейнера к хосту, чтобы подключиться к postgres, я получаю ошибки, хотя я могу пропинговать UP-адрес.

когда я смотрю на свой файл хоста host. docker .internal установлен на 10.0.0.47 (мое подключение к Wi-Fi). Является ли это "отключением" частью моих сетевых проблем.

Я отправил несколько вопросов по этому поводу и получил один ответ, а потом больше ничего. Я очень хотел бы, чтобы кто-нибудь поработал со мной немного, чтобы решить эту - которая должна быть незначительной - проблемой.

Я изменил свой файл pg_hba.conf, я сделал все, что смог найти .. .

Я дам номер телефона или адрес электронной почты всем, кто захочет помочь мне решить эту проблему. Я убивал себя больше недели и ничего не добился. Я даже не уверен, что здесь разрешены такие запросы, но я в отчаянии. Я работаю над проектом три месяца и не могу получить деньги, пока не решу эту незначительную проблему.

вот другой вопрос, который я задал несколько дней: go: Docker контейнер для подключения на Postgres не в docker

rentedtrout@gmail.com для всех, кто хочет работать со мной над этим.

Пожалуйста, заранее спасибо.

1 Ответ

0 голосов
/ 15 июля 2020

Пробовали ли вы использовать переключатель только для хоста?

docker run --network host "imagename".

Это позволит использовать ту же сеть, что и на хосте, т.е. если вы можете подключиться к Postgres с хоста, тогда вы также сможете подключить его из контейнера (с тем же IP-адресом).

...