2015-06-04 9 views
9

Chciałbym odzyskać port mapowany do pojemnika za pomocą doker sprawdzić, znalazłem coś takiego:Docker skontrolować Format odzyskać mapowanie portów

docker inspect --format=" {{ .NetworkSettings.Ports }} " containerid 

wyjściowa:

map[1234/tcp:[map[HostIp:0.0.0.0 HostPort:49159]] 3306/tcp:<nil> 4444/tcp:<nil> 4567/tcp:<nil> 4568/tcp:<nil>] 

Ale ja Chcemy mieć wyjście takie jak to:

1234/tcp:49159 

Czy to możliwe?

Odpowiedz

5

Zobacz również moja odpowiedź How to get ENV variable when doing Docker Inspect Chyba można dostosować i dostać się bezpośrednio, co chcesz

+1

Użyłem inspekcji docker --format "{{(index (index .NetworkSettings.Ports" 8000/tcp ") 0) .HostPort}} '87c Jako że daje to bezpośrednio wynik, który chcę, Dzięki dużo. – izissise

+1

Aby znaleźć porty EXPOSE i wyświetlić je w czystej postaci, można użyć 'doker inspect --format = '{{range $ p, $ conf: = .Config.ExposedPorts}} {{$ p}} {{end} } "containerid", który znalazłem [tutaj] (https://github.com/docker/docker/issues/6313#issuecomment-45781046). –

11

Komenda docker port może być bardziej przydatna; produkuje wyjście tak:

$ docker port 0a7b4df54966 
443/tcp -> 0.0.0.0:4430 
80/tcp -> 0.0.0.0:8888 
+0

Wielki I nie zrobił nie wiem o porcie dokowania – izissise

3

Można użyć indeksu w szablonie:

--format '1234/tcp:{{ (index (index .NetworkSettings.Ports "1234/tcp") 0).HostPort }}' 
+0

W szczególności, '--format '{{(index (index .NetworkSettings.Ports" 1234/tcp ") 0) .HostPort}}' – Andy

Powiązane problemy