во-первых, я как бы новичок в docker / linux / ufw и прочем!
Что я делаю:
Я создаю докер-контейнер, который предоставляет порт. в данном случае это 8080. Контейнер ведет себя так, как ожидалось.
Во-вторых, я хочу закрыть сервер. Поэтому я активирую UFW и разрешаю только 22, 80, 443.
Я ожидал, что не могу получить доступ к myserver: 8080, так как порт закрыт! Я понимаю, что докер использует iptables todo «материал» для маршрутизации к нему. На данный момент для меня это, к сожалению, просто «мелочь».
Итак, я создал файл json /etc/docker/daemon.json
с этим содержанием:
{
"iptables": true
}
с намерением убедиться, что все мои порты остаются закрытыми и UFW работает должным образом.
Сначала казалось, что все работает нормально, пока я не заметил, что мой контейнер больше не может дотянуться. Кажется, что он не может разрешить dns.
Так что я понимаю, что играю с вещами, которые в настоящее время не совсем понимаю.
Что я пытаюсь сделать!
Я в основном хочу, чтобы контейнеры работали с закрытыми портами. Но контейнеры должны иметь доступ к http / https api снаружи. Как я могу этого добиться?
Я очень благодарен за любую помощь и поддержку в моем процессе обучения :)
Заранее спасибо.
С уважением, Ханнес
Если вы хотите открыть порт 8080 и привязать тот же порт на хосте к контейнеру, то вам нужно открыть порт 8080 на хосте Iptables. / ufw.
docker run -d --name container_name -p 8080:8080 Image_name:tag
Стандартный порт, используемый DNS, - UDP 53, поэтому вы должны разрешить выходной порт 53 в udf.
sudo udf allow out 53