簡體   English   中英

我可以僅將Docker端口公開給另一個Docker(而不是主機)嗎?

[英]Can I expose a Docker port to another Docker only (and not the host)?

是否可以將端口從一個Docker容器公開到另一個(或幾個其他)容器,而不暴露給主機?

是的,您可以將容器鏈接在一起,並且只為這些鏈接的容器公開端口,而不必將端口導出到主機。

例如,如果您有一個運行postgreSQL db的泊塢窗容器:

$ docker run -d --name db training/postgres

您可以鏈接到運行您的Web應用程序的另一個容器:

$ docker run -d --name web --link db training/webapp python app.py

運行Web應用程序的容器將具有一組環境變量,其端口在db容器中公開,例如:

DB_PORT_5432_TCP_PORT=5432

環境變量是基於容器名稱創建的,在這種情況下,容器名稱為db,因此環境變量以DB開頭。

您可以在以下Docker文檔中找到更多詳細信息:

https://docs.docker.com/v1.8/userguide/dockerlinks/

我找到了容器鏈接的替代方法:您可以定義自定義“網絡”,並使用--net選項告訴容器使用它們。

例如,如果您打算將容器作為一個單元一起部署,則可以使它們全部共享相同的網絡堆棧(使用--net container:oneOfThem )。 這樣,您甚至不需要配置主機名就可以彼此查找主機名,它們可以共享相同的127.0.0.1而不會暴露給外部。

當然,通過這種方式,它們會將所有端口公開給彼此,並且您必須注意不要發生沖突(例如,它們不能同時運行8080)。 如果這是一個問題,您仍然可以使用--net ,而不是共享同一網絡堆棧,而是建立一個更復雜的覆蓋網絡。

最后,-- --net選項還可以用於使容器直接在主機的網絡上運行。

非常靈活的工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM