Как назначить статический IP-адрес контейнеру Docker
Статические IP-адреса не меняются при остановке и запуске контейнеров или служб, что делает их полезными для постоянной работы в сети. Назначение статических IP-адресов контейнерам Docker — это простой способ сделать их более доступными.
Зачем использовать статический IP?
Есть два вида «статического IP»; частные IP-адреса, используемые для внутренней сети внутри сервера, и общедоступные IP-адреса, используемые для подключения за пределами сервера, часто через Интернет.
Если вам нужно настроить общедоступный IP-адрес для контейнера, вы захотите использовать привязки портов. Вы можете «опубликовать» порты в контейнере Docker, чтобы они были доступны с хоста. Хотя существуют более сложные сетевые настройки, это, безусловно, самый простой и распространенный вариант. Например, привязка порта 80 (HTTP) на хосте к контейнеру NGINX:
docker run --publish=80:8080 nginx
Если вы хотите создать статический частный IP-адрес, вам следует подумать, нужен ли он вам вообще. В большинстве случаев вам понадобится статический IP-адрес для связи с одним контейнером из другого или с хоста. В большинстве случаев встроенная сеть Docker может справиться с этим.
Docker поставляется с сетью по умолчанию, но если вы создадите свою собственную, вы можете давать псевдонимы контейнерам при запуске в этой сети. Этот псевдоним автоматически преобразуется в частный IP-адрес контейнера. Например, контейнер NGINX здесь может получить доступ к экземпляру MongoDB с помощью строки подключения mongodb://mongohost:27017 .
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
Чтобы узнать больше, вы можете прочитать документацию Docker по пользовательским мостовым сетям.
Однако все еще есть много случаев, когда вы захотите вручную указать частный IP-адрес, например, для доступа к контейнерам непосредственно с хоста. Для этого вам все равно придется использовать собственную сеть Docker, но ее легко настроить.
Настройка статических IP-адресов
Во-первых, вам нужно настроить сеть Docker, и, поскольку нам важен IP-адрес, вам нужно указать фиксированную подсеть:
docker network create --subnet=172.20.0.0/16 customnetwork
Затем вы можете запустить контейнер, указав сеть с флагом —net и указав IP с флагом -ip :
docker run --net customnetwork --ip 172.20.0.10 -d container
Вы можете проверить правильность адреса, проверив его в контейнере с помощью exec -t bin/bash или просмотрев список контейнеров Docker:
docker inspect -f '>>>' name_or_id
Использование Docker Compose
Docker Compose — это инструмент, используемый для запуска нескольких контейнеров с предопределенными настройками. Это включает в себя настройку сетей с определенными подсетями, и вы можете прикреплять контейнеры к сетям с фиксированными IP-адресами, используя показанный здесь блок конфигурации ipv4_address :
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16
Все права защищены. © Linux-Console.net • 2019-2024
Как узнать IP-адрес, с которого отправляются запросы на загрузку образов в Docker registry?
Запросы на загрузку образов в Docker registry приходят с IP-адресов узлов кластера Kubernetes. Сеть узлов указывается в момент создания кластера (параметр «CIDR сети узлов»). По умолчанию эта сеть — 192.168.10.0/24. После создания кластера адреса сети узлов можно посмотреть с помощью команды kubectl:
kubectl get nodes -o wide
Была ли статья полезной?
© Авторские права 2024, Cloud.ru
Собрано при помощи Sphinx с использованием темы, предоставленной Read the Docs.
Как узнать ip-адрес контейнера Docker?
Всем привет, я новичок в Docker, поэтому вопрос может показаться глупым, но тем не менее, как на Windows 10 узнать адрес по которому запущен Docker-контейнер?
т.е. тот адрес, который нужно вводить в адресную строку браузера для работы с контейнером
- Вопрос задан более двух лет назад
- 7034 просмотра
Комментировать
Решения вопроса 2
Когда запускаете контейнер, указывайте порты: какой порт на компе будет соединён с каким портом в контейнере.
Например, контейнер с nginx слушает на 80 порту. И вы хотите, чтобы на хосте он был на порте 8080, тогда примерно так: docker run -d -p 8080:80 nginx
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
unseriously @unseriously
Можно командой: docker inspect
Ну а вообще используйте способ, подсказанный Сергей Соколов
Ответ написан более двух лет назад
не пробовал: к внутренней сетке докера можно подключиться просто по IP контейнера?
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Docker
Почему не работает fetch запрос внутри docker сети?
- 1 подписчик
- 4 часа назад
- 25 просмотров
Назначить статический IP адрес Docker-контейнеру
По умолчанию при запуске контейнера Docker он получает динамический IP адрес. В этой статье мы покажем, как назначить статический IP адрес контейнеру.
Создайте необходимую сеть Docker:
$ docker network create —subnet=172.24.0.0/16 mycustomnetwork
Чтобы запустить контейнер docker в этой сети с определенным IP адресом, выполните команнду:
$ docker run —net customnetwork —ip 172.24.0.11 -d container
Чтобы узнать IP адрес, который назначен Docker контейнеру, выполните команду:
$ docker container inspect -f ‘>’ CONTAINER_ID_OR_NAME
Также вы можете задать статический IP адрес в файле docker-compose.yml с помощью директивы ipv4_address. Например:
$ sudo vim docker-compose.yml
version: '2' services: webserver: image: nginx ports: - '8282:80' container_name: web-server networks: customnetwork: ipv4_address: 172.25.0.11 networks: mycustomnetwork2: ipam: config: - subnet: 172.25.0.0/16