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
, которая выводит список отображения портов для каждого контейнера, что позволяет вручную установить проброс портов из контейнеров в хост-систему.