欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          docker中expose是啥意思

          在docker中,expose是標記信息的意思,是一種文檔表述方式;expose能夠在dockerfile中讓開發(fā)者可以更快讀懂Image開放了哪些服務,不能直接打開端口,方便運維人員在使用容器時,知道要打開哪些端口,如果沒有expose端口, Container之間服務也是可以互相訪問的。

          docker中expose是啥意思

          本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。

          docker中expose是啥意思

          Dockerfile 里面的 expose,是標記信息,不能直接打開端口,方便運維人員在使用容器時,知道要打開哪些端口。使用時 docker run -itd -P xxx:xxx ,大寫 -P,會映射在Dockerfile文件中使用EXPOSE定義的端口,不需要手動 -p : 這種形式。

          EXPOSE只是一種文檔表述方式,在dockerfile中讓開發(fā)者可以更快讀懂Image開放了哪些服務,沒有實際作用意義。如果沒有EXPOSE端口, Container之間服務也是可以互相訪問的。

          Docker里面expose和publish(run -p)的區(qū)別

          這里主要記錄的是我最近使用docker發(fā)現(xiàn)的一個小小的疑惑??偨Y起來就是:

          docker里,命令行啟動時候docker run -p暴露接口和dockerfile里expose一個接口之間有什么區(qū)別和聯(lián)系。

          具體的描述如下:

          比如我先在Dockerfile里Expose一個8080的端口

          EXPOSE 8080

          然后我build這個image以備后期使用

          docker build -t myimage - Dockerfile

          接下來就是使用docker run啟動這個image的一個container實例,并且publish一個端口

          docker container run -d -p 8080 myimage

          這里就出現(xiàn)了一個我所說的一個疑問,既然我已經(jīng)在Dockerfile里聲明了Expose端口8080,為什么,我還需要publish這個端口(-p)呢。這兩者有什么區(qū)別和聯(lián)系,我是否能夠直接

          docker container run -d myimage

          呢,這種情況下,是否還有端口暴露出來呢?

          經(jīng)過測試,(測試過程被省略,感興趣的朋友可以自行去測試下,其實這兩者之間是有著本質(zhì)的區(qū)別的,同時也有著一定程度的關聯(lián)

          我這邊列出這這四種組合

          A, 既沒有在Dockerfile里Expose,也沒有run -p

          B, 只在Dockerfile里Expose了這個端口

          C,同時在Dockerfile里Expose,又run -p

          D, 只有run -p

          1——針對情況A,啟動在這個container里的服務既不能被host主機和外網(wǎng)訪問,也不能被link的container訪問,只能在此容器內(nèi)部使用

          2——–針對情況B,啟動在這個container里的服務不能被docker外部世界(host和其他主機)訪問,但是可以通過container

          link,被其他link的container訪問到

          3——–針對情況C,啟動的這個cotnainer既可以被docker外部世界訪問,也可以被link的container訪問

          4———針對情況D,其實docker做了特殊的隱式轉(zhuǎn)換,等價于情況C,既可以被外部世界訪問,也可以被link的container訪問到(真對這種情況,原因是docker認為,既然你都要把port

          open到外部世界了,等價于其他的container肯定也能訪問,所以docker做了自動的Expose

          推薦學習:《docker視頻教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號