Difference between "expose" and "publish" in docker這篇文章描述了3個不同的選項,以暴露端口:如何暴露EXPOSE中定義的端口,而不通過CLI選項明確設置端口?
如果不指定[
EXPOSE
或-p
],在容器 服務將無法訪問任何地方,除了從容器 自身內部。如果
EXPOSE
端口,在容器中的服務是無法訪問的 從泊塢窗外面,而是從其他Docker容器內。所以這個 適合於集裝箱間通信。如果你的
EXPOSE
和-p
是一個端口,在任何地方,即使在Docker之外,容器中的服務都是 。
如果我在Dockerfile中定義了EXPOSE
,並且希望容器將這些端口公開給主機,該怎麼辦?
示例:
如果我有以下Dockerfile。
FROM node:6
# ...
CMD node ./dist/bin/server.js
EXPOSE 8001
EXPOSE 8002
,我跑docker run
,我想映射到被設置8001:8001
,8002:8002
。
但是,我需要這樣做,而不使用-p
選項對端口值進行硬編碼。
用例:
從基於VM部署系統遷移到基於泊塢窗部署系統。每個Docker容器都在其自己的VM中運行。因此,不會與其他服務發生衝突。
是的,這仍然是一個問題,我想。你可以考慮使用'docker-compose' – n2o