Возможно ли выставить порт из одного контейнера Докера в другой (или несколько других), не подвергая его хосту?Могу ли я открыть порт Docker только для другого Docker (а не для хоста)?
ответ
Да, вы можете связывать контейнеры вместе, а порты открыты только для этих связанных контейнеров, без необходимости экспорта портов на хост.
Например, если у вас есть докер контейнер работает PostGreSQL дб:
$ docker run -d --name db training/postgres
Вы можете установить ссылку на другой контейнер работает веб-приложения:
$ docker run -d --name web --link db training/webapp python app.py
Контейнер работает ваш веб-приложение будет иметь набор переменных среды с портами, открытыми в контейнере db, например:
DB_PORT_5432_TCP_PORT=5432
Переменные среды создаются на основе имени контейнера, в этом случае имя контейнера - db, поэтому переменная среды начинается с БД.
Вы можете найти более подробную информацию в Докер документации здесь:
я нашел альтернативу контейнерной компоновки: Вы можете определить пользовательские «сети» и сказать контейнер, чтобы использовать их с помощью опции --net
.
Например, если ваши контейнеры предназначены для развертывания вместе как единое целое, все они могут иметь общий сетевой стек (с использованием --net container:oneOfThem
). Таким образом, вам не нужно даже настраивать имена хостов, чтобы они находили друг друга, они могут просто делиться одним и тем же 127.0.0.1
, и ничто не подвергается воздействию внешнего.
Конечно, таким образом они открывают все свои порты друг другу, и вы должны быть осторожны, чтобы не иметь конфликтов (они не могут оба запускать 8080, например). Если это вызывает беспокойство, вы все равно можете использовать --net
, чтобы не разделить один и тот же сетевой стек, но настроить более сложную оверлейную сеть.
И, наконец, опция --net
также может использоваться для запуска контейнера непосредственно в сети хоста.
Очень гибкий инструмент.
- 1. Сеть только для хоста для контейнера Docker
- 2. Docker: невозможно открыть порт 8080
- 3. Как открыть порт из хоста в контейнер в Docker?
- 4. Docker in Docker: Порт сопоставления
- 5. Как я могу открыть порт UDP на Docker?
- 6. docker-compose - Открыть связанный служебный порт
- 7. Docker не разоблачает порт для контейнера приложения
- 8. Могу ли я запускать контейнеры Docker после обновления хоста?
- 9. docker Не удалось создать адаптер только для хоста Windows 7
- 10. Docker - модифицирующие IPTABLES для хоста из контейнера
- 11. Docker: Невозможно указать порт для работающего контейнера
- 12. Порт контейнера Docker недоступен после старта IP-узла Docker изменен
- 13. docker я могу установить os из другого контейнера
- 14. Docker: объемы монтирования из другого сервиса докеров (не для контейнера)
- 15. Docker - порт предотвращает прослушивание
- 16. Docker не монтирует файлы хоста
- 17. Могу ли я использовать Docker Compose для предоставления Vagrant напрямую?
- 18. Docker не отправил порт из веб-службы
- 19. Как я могу открыть порт из контейнера для размещения?
- 20. Docker NodeJs для ReactJs
- 21. несколько хоста: Docker сеть
- 22. docker rabbitmq имя хоста выпуск
- 23. Docker Порт обнаружения
- 24. Docker хоста IP на убунту
- 25. Открыть порт хоста для конкретного интерфейса контейнера
- 26. Если я использую EXPOSE $ PORT в файле Docker, могу ли я разоблачить порт, когда я использую `docker run`?
- 27. Доступ к хосту хоста: порт из контейнера Docker в OSX
- 28. Возможно ли установить только docker cli, а не демон
- 29. Могу ли я приостановить, а затем возобновить контейнер Docker?
- 30. Docker составить и имя хоста
Это дополнительно предоставляет переменные окружения. Есть ли способ избежать воздействия переменных среды? –
Я не думаю, что это возможно. Согласно документации: * Предупреждение: важно понимать, что все переменные среды, происходящие из Docker внутри контейнера, становятся доступными для любого контейнера, который ссылается на него. Это может иметь серьезные последствия для безопасности, если в них хранятся конфиденциальные данные. * –
@ r.v Я думаю, вы можете обойти это, используя '--net' вместо привязки контейнера. – Thilo