Документация для интерфейса командной строки гласит следующее:
Чтобы привязать порт контейнера к определенному интерфейсу хоста системы, используйте параметр -p команды запуска докера:
Общий синтаксис
docker run -p [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] <image>
Если интерфейс хоста не предоставляется, порт привязан к все доступные интерфейсы хост-машины (aka INADDR_ANY, или 0.0.0.0). Если ни один хост-порт не предоставляется, один динамически распределяется. Возможные комбинации параметров для TCP-порта следующие
Итак, мне было интересно, как я делаю то же самое, но с REST API?
С POST /container/create
я попробовал:
-
"PortSpecs": ["5432:5432"]
кажется, что он раскрывает порт, но не привязывает его к интерфейсу хоста. -
"PortSpecs": ["5432"]
дает мне тот же результат, что и предыдущий. -
"PortSpecs": ["0.0.0.0:5432:5432"]
это возвращает ошибкуInvalid hostPort: 0.0.0.0
, которая имеет смысл.
Когда я делаю sudo docker ps
, контейнер показывает 5432/tcp
, который должен быть 0.0.0.0:5432/tcp
.
Проверка контейнера дает мне следующее:
"NetworkSettings": {
"IPAddress": "172.17.0.25",
"IPPrefixLen": 16,
"Gateway": "172.17.42.1",
"Bridge": "docker0",
"PortMapping": null,
"Ports": {
"5432/tcp": null
}
}
Полную проверку можно найти здесь.