Saya mencoba untuk mendapatkan semua port yang digunakan oleh wadah Docker dengan perintah ini:
sudo docker ps | tail -n1
29ba3137f3e2 java8/local:latest "/bin/bash" 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:32783->5432/tcp, 0.0.0.0:32782->10523/tcp DEMO-20151118124751
Ketika saya menjalankannya di terminal saya mendapatkan yang saya inginkan.
$ sudo docker ps | tail -n1 | awk '{print $12}'
0.0.0.0:32783->5432/tcp,
Tapi aku butuh semua port yang dipetakan. Apakah mungkin membuat skrip shell seperti ini:
#!/bin/bash
paramnum=$(sudo docker ps | grep $lasttimestamp | wc -w);
text=$(sudo docker ps | tail -n1);
begin=($paramnum-4);
end=($paramnum-1);
for (( i=$end; i>=$begin; i--))
do
t="awk '{print $"$i"}'";
eval "echo $text | $t";
done
Saya telah berkeliaran selama beberapa jam. Tolong bantu, atau sarankan cara untuk mendapatkan output seperti di bawah ini.
0.0.0.0:32782->10523/tcp
0.0.0.0:32783->5432/tcp,
0.0.0.0:8443->8443/tcp,
0.0.0.0:8080->8080/tcp,
command-line
bash
docker
R.Chisit
sumber
sumber
sudo docker ps | perl -lane '$next=<>&&redo;$,="\n";foreach(@F){/tcp,?$/&&push(@list, $_)};print(@list);last'
sudo docker ps | tail -n 1 | perl -lae '$,="\n";foreach(@F){/tcp,?$/&&push(@x,$_)};print(@x)'
Menurut halaman manual buruh pelabuhan Anda dapat mencoba ini:
atau jika Anda juga membutuhkan ID:
Tidak disebutkan dalam dokumentasi, tetapi untuk memformat output yang harus Anda gunakan
{{}}
.Kutipan dari
man docker-ps
:Docker 1.10.3
Saat ini, ada beberapa catatan berguna tentang
{{}}
kawat gigi diman docker-ps
:sumber
Menggunakan
awk
dengan pembatas bidang{2,}
. Mengapa{2,}
? output darips
penggunaan lebih dari satu ruang sebagai pemisah antara kolom. Berarti, kita bisa menggunakan ini sebagai pemisah untukawk
perintah.awk -F" {2,}" '{print $6}'
atau untuk
ps
perintah Andaatau tanpa
tail
Output sampel
atau
sumber
ps
memiliki output lain.buruh pelabuhan ps -q | port docker xargs -n1
sumber