Не уверен, что это быстро:
awk -v value=0 '
NR==FNR{for(i=2;i<=NF;i++){if($i==value){s[i]++}}}
NR!=FNR {
printf "%s"OFS,$1
for (i=2;i<=NF;i++){if(s[i]>1)last=i}
for (i=2;i<=NF;i++){
if(s[i]>1){
if (i==last)printf "%s\n",$i
else printf "%s"OFS,$i}
}
}
' file file
Возможно, вы захотите установить OFS
на вкладку(BEGIN{OFS="\t"}
.)
Вы можете добавить в настройки службу обратного прокси-сервера, а затем закрыть доступ к портам службы 1 и службы 2 и позволить обратному прокси-серверу фильтровать трафик.
Если вы не предоставляете порты, контейнеры могут по-прежнему общаться друг с другом (в одной и той же сети докеров )и разрешать IP-адреса по именам служб через встроенный -в DNS докеров. (Пр. сервис1, сервис2 ).
В этом случае ваш компоновочный файл будет выглядеть примерно так:
services:
service1:
service2:
proxy:
ports:
- 80:80
- 443:443
- <extra ports>:<extra ports>
Например, вы можете использовать контейнер nginx с дополнительной конфигурацией :(просто убедитесь, что прокси-сервер настроен на прослушивание внешних портов, которые вы указываете в своей службе.):
location /service1 {
allow X.X.X.X;
deny all;
proxy_pass http://service1:1234;
}
location /service2 {
allow X.X.X.X;
deny all;
proxy_pass http://service2:6969;
}
В качестве альтернативы вы можете создать две директивы «сервер» в конфигурации nginx, каждая из которых прослушивает один из служебных портов, а затем пропускает трафик через корневой каталог («/» ), если вы не хотите добавлять путь к URL-адресу.
Это дополнительно позволит вам запускать несколько копий ваших служб, все из которых прослушивают одни и те же порты, сохраняя при этом возможность предоставлять их (и фильтровать трафик )через обратный прокси-сервер.