`docker run` из boost::process::system приводит к появлению контейнеров с нефункциональным доступом к сетиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 `docker run` из boost::process::system приводит к появлению контейнеров с нефункциональным доступом к сети

Сообщение Anonymous »

Например. У меня есть контейнер, в котором процесс каждые несколько секунд отправляет контрольное сообщение через порт UDP.
Когда я запускаю из bash docker run --detach , я получаю сообщение на хосте.
Когда я звоню

Код: Выделить всё

std::future process_stderr, process_stdout;
std::list arguments{"-c", "run --detach "};
int error = boost::process::system(boost::process::exe  = "/usr/bin/bash",
boost::process::args = arguments,
boost::process::std_out > process_stdout,
boost::process::std_err > process_stderr);
Я получаю сообщение на хосте.
Но когда я звоню

Код: Выделить всё

std::future process_stderr, process_stdout;
std::list arguments{"run", "--detach", ""};
int error = boost::process::system(boost::process::exe  = "/usr/bin/docker",
boost::process::args = arguments,
boost::process::std_out > process_stdout,
boost::process::std_err > process_stderr);
Нет. Мне нужно добавить --network=host в качестве дополнительного параметра.
Согласно документации по сетевым режимам Docker, это не должно (и изнутри bash нет) необходимости:

Контейнеры имеют сетевое взаимодействие по умолчанию, и они могут устанавливать исходящие соединения.


Контейнеры, подключенные к мост по умолчанию имеет доступ к сетевым службам за пределами хоста Docker.


Сеть моста Docker имеет подсеть IPv4 и, при необходимости, подсеть IPv6. [...] По умолчанию он [разрешает] неограниченный сетевой доступ к контейнерам в сети с хоста[.]
  • Откуда такое различное поведение?
  • (Как) я могу назвать это «правильно», не обертывая его в bash?
Используемые версии:
  • Ubuntu 22
  • libboost 1.74
  • GNU bash 5.1.16
  • Docker 28.2.2


Подробнее здесь: https://stackoverflow.com/questions/799 ... n-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»