Доступ к хосту iptables и ufw из привилегированного Docker контейнера - PullRequest
2 голосов
/ 14 марта 2020

Я хотел бы получить доступ к iptables, ufw и reboot, работающим на хост-ОС (Snappy Ubuntu Core 18.04) из Docker контейнера (работает на тот же хост).

Какие тома или Docker параметры контейнера требуются, чтобы сделать это возможным? Контейнер может быть запущен с root пользовательским и привилегированным доступом.

Я полностью осведомлен о последствиях безопасности здесь, но безопасность в данном контексте не имеет значения.

1 Ответ

3 голосов
/ 14 марта 2020

Использование S SH

Вы можете запустить контейнер с опцией --net=host, тогда можно подключиться к хосту из контейнера, используя s sh.

в режиме хоста возможно подключение к порту 22 на хосте из контейнера.

Без S SH

, если вы не Если вы хотите использовать s sh, один способ объясняется в этом посте. Вам нужно запустить контейнер с --privileged и --pid=host, а затем использовать команду nsenter. С помощью этой команды вы получаете интерактивную оболочку с хоста. Вы также можете запустить только нужную команду.

$ sudo docker run --privileged --pid=host -it alpine:3.8 \
nsenter -t 1 -m -u -n -i sh
$ sudo docker run --privileged --pid=host -it alpine:3.8 \
nsenter -t 1 -m -u -n | sudo iptables -S

обратите внимание, что если вы используете MacOS или Windows, docker работает в гипервизоре, поэтому при использовании этого вы будете в оболочка гипервизора.

...