Контейнер Windows Docker Networking to Postges на хосте (windows 10)

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

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

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 в сети докеров связан с этим сетевым адаптером Hyper v. оба имеют 172.22.96.1 в качестве IP-адреса

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

Сервер =172.22.96.1; Порт =5433; База данных =QuickTechAssetManager;Uid=QuickTech;Pwd= пароль;

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

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

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

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

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

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

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

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

1 ответ

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

docker run --network host "imagename".

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

Другие вопросы по тегам