2015-06-04 14 views
9

Tôi muốn lấy lại cảng ánh xạ tới một chai lọ bằng Docker kiểm tra, tôi thấy một cái gì đó như thế:Docker kiểm tra định dạng lấy cổng lập bản đồ

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

Output:

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

Nhưng tôi d muốn có kết quả như sau:

1234/tcp:49159 

Có thể không?

Trả lời

5

Xem thêm câu trả lời của tôi How to get ENV variable when doing Docker Inspect Tôi đoán bạn có thể thích ứng và nhận trực tiếp những gì bạn muốn

+1

Tôi đã sử dụng docker inspection --format '{{(index (index .NetworkSettings.Ports "8000/tcp") 0) .HostPort}}' 87c Vì nó cung cấp trực tiếp kết quả tôi muốn, Cảm ơn rất nhiều. – izissise

+1

Để tìm các cổng EXPOSE'd và liệt kê chúng một cách rõ ràng, bạn có thể sử dụng 'docker inspection --format = '{{range $ p, $ conf: = .Config.ExposedPorts}} {{$ p}} {{end} } 'containerid' mà tôi đã tìm thấy [ở đây] (https://github.com/docker/docker/issues/6313#issuecomment-45781046). –

11

Lệnh docker port có thể hữu ích hơn; nó tạo ra như thế này:

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

vĩ đại tôi didn Không biết về cổng docker – izissise

3

Bạn có thể sử dụng chỉ số trong mẫu của bạn:

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

Cụ thể, '--format '{{(chỉ mục (chỉ mục .NetworkSettings.Ports" 1234/tcp ") 0) .HostPort}}'' – Andy

Các vấn đề liên quan