Контейнер Docker динамически добавляет порт

Docker


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

Ссылаться на:

Способ сопоставления портов модифицированного iptables

Сопоставление портов Docker реализовано не в технологии docker, а через iptables хоста. Сопоставление портов выполняется путем управления мостом, аналогично настройке сопоставления портов маршрутизации в маршрутизаторе.

Например, у нас есть порт 80 контейнера, сопоставленный с портом 8080 хоста, сначала проверьте, какие правила установлены в iptables:

sudo iptables -t nat -vnL

В результате получается одно:

Chain DOCKER
target     prot opt source               destination
RETURN     all  --  0.0.0.0/0            0.0.0.0/0
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:172.17.0.3:80

Мы видим, что докер создал пользовательскую цепочку с именем DOKCER. И ip контейнера, где я открываю порт 80, 172.17.0.3.

Вы также можете просмотреть IP-адрес контейнера с помощью команды inspect:

docker inspect containerId |grep IPAddress

Мы хотим добавить еще одно сопоставление портов, например8081->81Просто эта цепочка плюс одно правило:

sudo iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:81

Если ошибка или хотите изменить:

Сначала отображать номер строки

sudo iptables -t nat -vnL DOCKER --line-number

удалить правило 3

sudo iptables -t nat -D DOCKER 3

Способ 2. Измените файл конфигурации контейнера.

файл конфигурации контейнера/var/lib/docker/containers/[containerId]Под содержанием,hostconfig.jsonиconfig.v2.jsonПосле изменения перезапустите службу контейнера.

Способ 3. Создайте новый образ из работающего контейнера, а затем запустите новый образ.

  1. Отправьте работающий контейнер в виде изображения
docker commit containerid heropoo/example

2. Бегиheropoo/exampleОтразите и добавьте порт 80 контейнера сопоставления 8080

docker run -d -p 8000:80  heropoo/example /bin/sh

Попробуйте~😎

Оригинальная ссылка:

zhuanlan.zhihu.com/p/65938559