Все, что вам нужно сделать, это преобразовать через NAT трафик, поступающий с частного IP-адреса контейнера на интерфейс хоста для общедоступного IP-адреса контейнера ($ publicIP2):
iptables -t nat -A POSTROUTING -s 10.204.119.5/32 -j SNAT --to-source $publicIP2
В systemd версии 231 для этой цели была введена переменная среды JOURNAL_STREAM
. Ваша программа проверяет его значение, сравнивает его значение с устройством и номером i-узла своей стандартной ошибки и соответствующим образом изменяет свое поведение.
Когда не подключен к журналу, вы всегда можете (конечно) всегда использовать что-то вроде JSON, записанного (в виде одной строки на объект) для стандартной ошибки, чтобы там тоже были структурированные записи журнала. RFC 5424 также имеет (более ограниченные) параметры структурированных данных.
systemd
уже элегантно обрабатывает этот случай для вас, как задокументировано в systemd.exec.
Вести журнал в STDOUT. При запуске через systemd, systemd будет по умолчанию перенаправлять STDOUT в журнал.
Другой вариант - journal+console
, если вы всегда хотите вести журнал в обоих случаях.
Ведение журнала в STDOUT также является лучшей практикой в 12-факторном дизайне приложений.