Столкнулся вдруг с проблемой, как добавить порт в уже запущенный docker-контейнер, поискал информацию, взял на заметку.
Ссылаться на:
- Как добавить новый порт в работающий докер-контейнер
- Как изменить сопоставление портов контейнера Docker
- просмотр правил iptable, добавление, удаление и изменение
Способ сопоставления портов модифицированного 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. Создайте новый образ из работающего контейнера, а затем запустите новый образ.
- Отправьте работающий контейнер в виде изображения
docker commit containerid heropoo/example2. Бегиheropoo/exampleОтразите и добавьте порт 80 контейнера сопоставления 8080
docker run -d -p 8000:80 heropoo/example /bin/shПопробуйте~😎
Оригинальная ссылка: