Как замапить порт на docker?

Для того чтобы замапить порт на Docker контейнере, вы можете использовать опцию -p или --publish команды docker run.

Синтаксис опции -p следующий: -p [host порт]:[container порт]/[protocol]. host порт - это порт на вашем хосте, который будет привязан к container порт - порту внутри Docker контейнера. Протокол указывается необязательно и по умолчанию является TCP.

Например, допустим вы хотите запустить PostgreSQL контейнер и привязать его порт 5432 к порту 5432 на вашем хосте:

docker run -d -p 5432:5432 postgres:latest

Теперь порт 5432 на вашем хосте будет проксирован на порт 5432 внутри контейнера. Вы сможете подключиться к базе данных PostgreSQL, используя этот порт.

Если вы хотите использовать случайный порт на вашем хосте, вы можете указать только container порт для опции -p:

docker run -d -p 5432 postgres:latest

Docker автоматически присвоит случайный порт на вашем хосте и привяжет его к порту 5432 внутри контейнера. Чтобы узнать, к какому порту на вашем хосте был привязан контейнер, вы можете использовать команду docker ps:

docker ps

Output будет содержать информацию о запущенных контейнерах, включая информацию о привязанных портах. Вы увидите что-то вроде:

CONTAINER ID   IMAGE          ...
abcdef123456   postgres:latest ...
PORTS          0.0.0.0:32768->5432/tcp

В данном примере, контейнер был привязан к порту 32768 на вашем хосте.

Также стоит заметить, что порты могут быть привязаны только к открытым портам на вашем хосте, и вы должны проверить, не занят ли порт, прежде чем привязывать его к Docker контейнеру.