Для того чтобы замапить порт на 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 контейнеру.