Qual é a diferença entre ports de composição do ancoradouro vs expos

In docker-compose.ficheiro yml, existem opções para ports e expose. Como é que são diferentes?

Author: bibstha, 2016-11-25

1 answers

De acordo com o termo de Referência,

Os portos são definidos como:

Exponhaportas . Indique ambos os portos (HOST:CONTAINER) ou apenas o porto do container (será escolhido um porto host Aleatório).

  • Os Portos mencionados no "docker-compose".yml será compartilhado entre os diferentes serviços iniciados pela docker-compose.
  • As portas serão expostas à máquina hospedeira a uma porta aleatória ou a uma dada porta.

O meu docker-compose.yml parece

mysql:
  image: mysql:5.7
  ports:
    - "3306"

Se o fizer docker-compose ps, parecerá:

$ docker-compose ps                                                                                        10:27:28
  Name                     Command               State            Ports
-------------------------------------------------------------------------------------
  mysql_1       docker-entrypoint.sh mysqld      Up      0.0.0.0:32769->3306/tcp

Expose é definido como:

Exponha os portos sem publicá - los na máquina anfitriã-eles só serão acessíveis a serviços ligados. Só o porto interno pode ser especificado.

Os Portos não estão expostos a máquinas hospedeiras, apenas expostos a outros serviços.

mysql:
  image: mysql:5.7
  expose:
    - "3306"

Se o fizer docker-compose up, parecerá:

  Name                  Command             State    Ports
---------------------------------------------------------------
 mysql_1      docker-entrypoint.sh mysqld   Up      3306/tcp
 241
Author: bibstha, 2018-09-08 19:52:56