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