У меня есть следующий скрипт, который я запускаю в cloud-init на моем облачном провайдере. Он захватывает контейнер с другого хоста в моей сети, запускает его и затем пытается перенаправить порт на хосте в контейнер:
lxc init ...
lxc remote add gateway 10.132.98.1:8099 --accept-certificate --password securpwd
lxc copy gateway:build-slave build-slave
lxc start build-slave
CONTAINER_IP=$(lxc list "build-slave" -c 4 | awk '!/IPV4/{ if ( $2 != "" ) print $2}')
iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 2200 -j DNAT --to ${CONTAINER_IP}
Единственная проблема заключается в том, что существует произвольная задержка между возвращением lxc start
и получением информации IPV4
. Мое текущее решение состоит в том, чтобы добавить sleep 5s
после команды lxc start
, но я беспокоюсь, что, если мой сервер находится под нагрузкой, может пройти более 5 секунд до инициализации контейнера.
Есть ли лучшее решение, которое не зависит от произвольного периода ожидания?