Nachdem das Bild ziehen, wenn Sie unter Befehl ausführen
docker history --no-trunc wurstmeister/zookeeper | grep EXPOSE
... EXPOSE 2181/tcp 2888/tcp 3888/tcp
... EXPOSE map[22/tcp:{}]
Sie sehen also, dass die Dockerfile dieses Bild zu bauen verwendet hat erwähnt, dass Port 2181, 2888, 3888, 22
ausgesetzt werden sollen.
docker ps
zeigt Ihnen die Ports, die von den Bildmetadaten erwähnt werden und auch die, die Sie zugeordnet haben.
Lassen Sie sich sagen, dass ich den unten stehenden Befehl ausführen
docker run --rm nginx
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e39964ca9bb8 nginx "nginx -g 'daemon ..." 2 seconds ago Up 1 second 80/tcp suspicious_jones
Dies teilt die Bild-Metadaten zeigen zeigt an, dass Port 80 ist, was das Programm im Innern des Behälters zu lauschen kann. Nun, wenn ich laufen den gleichen Behälter wie unten
docker run -p 8080:8080 --rm nginx
docker ps
zeigen
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
93df718d1d86 nginx "nginx -g 'daemon ..." 26 seconds ago Up 25 seconds 80/tcp, 0.0.0.0:8080->8080/tcp confident_bassi
So ist es eine Kombination von Bild Port-Metadaten und die Ports, die Sie tatsächlich abgebildet. Diese Metadaten sind praktisch, wenn wir die -P
Flagge
docker run -P --rm nginx
Jetzt verwenden docker ps
uns
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf70d3212ee9 nginx "nginx -g 'daemon ..." 1 second ago Up 1 second 0.0.0.0:32768->80/tcp hungry_keller
gibt Wie Sie jeden Port sehen kann automatisch an einen freien Port in den Bild-Metadaten erwähnt auf dem Host zugeordnet wird