Docker узнать ip контейнера

I am using Docker for Mac. I am running a nodejs based microservice in a Docker container. I want to test node microservice through the browser. How to get IP address of running docker container?

7 Answers 7

If you don’t want to map ports from your host to the container you can access directly to the docker range ip for the container. This range is by default only accessed from your host. You can check your container network data doing:

Probably is better to filter:

Usually, the default docker ip range is 172.17.0.0/16 . Your host should be 172.17.0.1 and your first container should be 172.17.0.2 if everything is normal and you didn’t specify any special network options.

EDIT Another more elegant way using docker features instead of "bash tricking":

Есть необходимость узнать IP адреса запущенных контейнеров. Практика показала что стандартный метод получения информации о контейнере выглядит так:

После чего будет вывалено очень много информации в JSON формате. JSON — удобно. Неудобно то, что я хочу просто информацию об IP. Или же вовсе хочу список всех этих IP. Для этого нужно указать какую именно секцию данных мы хотим посмотреть — что-то вроде фильтров:

Супер, но каждый раз такое набирать утомительно, да и запоминать не очень хочется. В итоге родился такой вот простой bash скрипт:

Получается очень удобно и даже команды схожи по написанию. Если нужен список всех запущенных контейнеров, то пишем

а если хотим узнать IP этих контейнеров, товместо пробелла у нас всего лишь добавляется символ i

Я не вывожу полный хеш контейнера так как он и не нужен. Для тех, кто не знает: при работе по хешу можно указывать первые 3 символа а не копировать весь хеш целиком.

Читайте также:  Can t find language dll msain dll

Как дополнение всегда можно воспользоваться командой

Эта команда позволяет узнать IP конкретного контейнера.

есть ли команда, которую я могу запустить, чтобы получить IP-адрес контейнера прямо с хоста после создания нового контейнера?

в принципе, как только Docker создает контейнер, я хочу свернуть свои собственные сценарии развертывания кода и конфигурации контейнера.

30 ответов

на –format опция inspect приходит на помощь.

современный синтаксис клиента Docker:

старый синтаксис клиента Docker:

который вернет только IP-адрес.

можно использовать docker inspect

сначала получите идентификатор контейнера:

(первый столбец для идентификатора контейнера)

используйте идентификатор контейнера для запуска:

внизу, в разделе "NetworkSettings", вы можете найти"IPAddress"

docker inspect CONTAINER_ID | grep "IPAddress"

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

если вы используете docker-compose команда будет такая:

добавьте этот сценарий оболочки в свой

/.bashrc или соответствующие файл:

затем, чтобы получить IP-адрес контейнера, просто сделать это:

для новой версии Docker, пожалуйста, используйте следующее:

показать все IP-адреса контейнеров:

в Docker 1.3+ вы также можете проверить его с помощью следующих шагов:

введите Докер работает:

начиная с Docker версии 1.10.3, построить 20f81dd

Если вы не сказали докеру иначе, Докер всегда запускает ваши контейнеры в сети моста. Таким образом, вы можете попробовать эту команду ниже:

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

это отобразит активные изображения docker:

используйте значение идентификатора контейнера:

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

первая команда дает IP-адрес всех контейнеров, а вторая-IP-адрес конкретного контейнера.

Читайте также:  Intel core i5 2430

контейнеры ссылки по имени:

затем возьмите IP-адрес по имени:

Я написал следующий скрипт Bash, чтобы получить таблицу IP-адресов из всех контейнеров, работающих под docker-compose .

вы должны изменить сеть переменных на свое собственное сетевое имя.

Docker сделан внутренне в Go, и он также использует синтаксис Go для целей запроса.

для проверки IP-адреса конкретного контейнера необходимо выполнить команду (- F для опции форматирования)

для идентификатора или имени контейнера вы можете запустить команду docker container ls . Он будет перечислять каждый запущенный контейнер.

вот решение, которое я разработал сегодня в Python, используя вывод JSON "docker inspect container" в качестве источника данных.

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

важно: начиная с версии 1.9, Docker позволяет создавать несколько сетей и присоединять их к контейнер.

выход так же, как это:

вышеизложенное работает, если контейнер развернут в сети моста по умолчанию.

однако, если вы используете пользовательскую мостовую сеть или сеть наложения, я нашел ниже, чтобы работать лучше:

чтобы расширить ответ ko-dos, вот псевдоним для списка всех имен контейнеров и их IP-адресов:

Если вы установили Docker с помощью Docker Toolbox, вы можете использовать приложение Kitematic для получения IP-адреса контейнера:

  1. выберите контейнер
  2. нажмите на Настройки
  3. перейдите на вкладку порты.

внимание. для использования Docker Compose:

поскольку Docker Compose создает изолированную сеть для каждого кластера, приведенные ниже методы не работают с docker-compose .

самый элегантный и простой способ-определить функцию оболочки как наиболее проголосовавший ответ @WouterD это:

Docker может записывать идентификаторы контейнеров в файл, такой как программы Linux:

Читайте также:  Full hd web camera

работает с –c > параметр, Docker сбрасывает идентификатор контейнера в этот файл.

использование PID-файла

  1. запуск контейнера с , app.cid содержимое файла, как показано ниже:

вы можете использовать содержимое файла для проверки контейнеров Docker:

➜ blog-v4 git:(develop) ✗ docker inspect `cat app.cid`

Извлечение Контейнера IP встроенный скрипт Python:

$ docker inspect `cat app.cid` | python -c "import json;import sys; sys.stdout.write(json.load(sys.stdin)[0][‘NetworkSettings’][‘IPAddress’])" 172.17.0.2

Более Дружественные Формы

здесь есть 10 альтернатив получения IP-адресов контейнера Docker.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector