Quina diferència hi ha entre “exposar” i “publicar” a Docker?


Resposta 1:

La publicació assigna el port del contenidor a un port especificat de l'amfitrió.

Suposem que un dels vostres serveis de docker és MySQL. De manera predeterminada, MySQL escolta el port 3306.

Si feu foc al contenidor, aquesta instància començarà a escoltar-se al port 3306 ...

... però els únics que podran connectar-se són altres contenidors docker que funcionen al mateix host, que utilitzen la xarxa interna del docker en aquest host per especificar-se.

Tanmateix, si utilitzeu l’ordre -p (a Docker) o la comanda PORTS (en un DockerFile), podeu dir a l’amfitrió que comenci a escoltar en aquest port i que enviï qualsevol sol·licitud que arribi al contenidor del docker.

Exposar, per contra, no fa res útil a part de donar suggeriments :-)

És millor pensar-ho com un estàndard de documentació. La persona que escriu el Dockerfile necessita una manera d’explicar-li a la persona que executa el Dockerfile el port que porta en funcionament l’aplicació.

L’opció primera per a això és enviar el Dockerfile amb un README.

La segona opció, que és més elegant, és incloure (a) Exposar directiva (es) en la qual es mostren els ports crítics.

Això permet que la persona que executa Dockerfile escrigui una directiva PORT adequada per al seu entorn Docker-composeu, o utilitzi el senyalador -p ...

De fet, fa alguna cosa ... si un port està documentat per EXPOSE i no hi ha una directiva PORT, el port EXPOSAT s'assignarà un port (aleatori, alt) a la màquina host ... que l'administrador pot buscar i connectar.