Пакетные задания, отправленные qsub
, по умолчанию выполняются в вашем домашнем каталоге.
Некоторые версии qsub
поддерживают опцию -d
для указания другого каталога. Чтобы выполнить скрипт в том же каталоге, где вы запустили qsub
, используйте
qsub -d "$PWD" -q hpc-pool ./myScript.sh
Если опция -d
недоступна, вы можете получить доступ к каталогу, в котором вы запустили qsub
в вашем скрипте, в переменной PBS_O_WORKDIR
. Поэтому добавьте эту строку в начало вашего сценария:
cd "$PBS_O_WORKDIR" || exit $?
Из-за DNAT вы теперь маршрутизируете . Ваша цепочка INPUT больше не используется для этого DNAT-трафика, и теперь вместо нее проходится цепочка FORWARD. Новый пункт назначения — 172.21.0.2:8080
, и теперь правила должны заботиться об этом, а не <VM local IP>:8090
.
Таким образом, с помощью DNAT вы должны заблокировать свой трафик с помощью (в правильном порядке :разрешить исключение, а затем запретить все остальное):
iptables -A FORWARD -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -d 172.21.0.2 -p tcp --dport 8080 -j DROP
Чтобы убедиться, что это действительно сделано перед любым системным правилом, вы можете:
iptables -I FORWARD 1 -s <IP> -d 172.21.0.2 -p tcp --dport 8080 -j ACCEPT
iptables -I FORWARD 2 -d 172.21.0.2 -p tcp --dport 8080 -j DROP
Эти правила могут помешать другим контейнерам получить доступ к этому контейнеру в зависимости от конфигурации, поэтому вам, возможно, придется адаптировать их (, указав внешний интерфейс ввода, например ). В любом случае, вы должны найти способ хорошо интегрировать это с системным методом брандмауэра.
об этих строках:
iptables -A INPUT -p tcp --dport 8090 -j DROP
iptables -A INPUT -p tcp --dport 8090 -s <IP> -j ACCEPT
вам следует изменить их порядок, потому что IPTables правила перезаписывают друг друга в состоянии конфликта, и это правильный способ, поэтому сначала исправьте их и проверьте все остальные роли, чтобы предотвратить перезапись.
относительно NAT части вашего вопроса, неясно, однако в докере вы должны назначать порт при создании контейнера:
docker run... -p 8090:8080...