Как можно сослаться на имя хоста ip докерной сети? - PullRequest
0 голосов
/ 26 апреля 2018

Например, на localhost мы просто ссылаемся на localhost:port, чтобы подключиться к процессу, запущенному на порту port на локальной машине.Есть ли способ ссылаться на сеть, в которой работает контейнер, чтобы нам не пришлось беспокоиться и жестко кодировать, что такое ip конкретного контейнера / службы.Например, если мы хотим подключиться к базе данных postgresql, мы просто напишем bridge1:5432.

EDIT : @ fly2matrix предложила использовать решение именованного контейнера, но оно не сработало, docker network inspect bridge возвращает

    ...
    "Containers": {
        "2375b29321dc4a5947f8b63b46fe1c955f43fb1fbca64bb2adce3503380dda37": {
            "Name": "somepostgres",
            "EndpointID": "398ec0e792b836ceb5dd5d2e448e813047f9157ad90283b448e40eaf3f4f5b66",
            "MacAddress": "02:42:ac:11:00:03",
            "IPv4Address": "172.17.0.3/16",
            "IPv6Address": ""
        },
        "a72fbb333e2d8cd3b7b78205795456fadc44678348ccedc58a78510cd273505b": {
            "Name": "pizz",
            "EndpointID": "2e7aa30844a632f4d42e3d0cfa16003dfd1d86aef85e63d16c83b3a71601e134",
            "MacAddress": "02:42:ac:11:00:02",
            "IPv4Address": "172.17.0.2/16",
            "IPv6Address": ""
        }
    },

Мои контейнеры находятся на одной лодке, но если я пытаюсь подключиться к somepostgres:5432 из pizz контейнера, он просто говорит «неизвестный хост».

1 Ответ

0 голосов
/ 26 апреля 2018

Попробуйте использовать именованные контейнеры,

#>docker run -d -it --name "container-name" {image-name}:{tag}

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

Кроме того, вы также можете использовать опцию --link для ссылкиконтейнеры (внутренне он создаст запись в / etc / hosts для создания псевдонима dns name)

...