docker ps -q | xargs -n 1 docker inspect | jq '.[0].NetworkSettings.Ports +{} | map(select(. != null)[0].HostPort) | map("-L \(.):localhost:\(.)") ' | sed -n 's/.*"\(.*\)".*/\1/p' |xargs boot2docker ssh -N
Эта команда используется для автоматического туннелирования всех портов запущенных инстансов Docker в boot2docker.
— docker ps -q выводит ID всех запущенных контейнеров;
— xargs -n 1 docker inspect для каждого ID выполнит команду docker inspect, которая выводит информацию о контейнере в формате JSON;
— jq '.[0].NetworkSettings.Ports +{} | map(select(. != null)[0].HostPort) | map("-L \(.):localhost:\(.)")' извлекает значения порта и формирует список опций для команды проброса порта ssh (-L), который затем выполняет boot2docker ssh -N (без логина на целевую машину), чтобы эти команды выполнились на хост-машине.
Альтернативной командой может служить docker port, которая выводит список отображения портов для каждого контейнера, что позволяет вручную установить проброс портов из контейнеров в хост-систему.
