搜尋

首頁  >  問答  >  主體

docker 連接埠映射 有點蒙圈 誰給解釋一下

docker 連接埠映射 有點蒙圈 誰給解釋一下

ringa_leeringa_lee2774 天前2972

全部回覆(3)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-04-25 09:03:39

    容器間互相存取需在容器建立時使用--link參數,並且最好被連接的容器已經命名過。

    docker run --name mysql .......
    docker run --name php --link mysql .......
    docker run --name nginx --link php .......

    以這種方式啟動時,只需要在程式內使用對應的容器名稱即可存取對應的服務。
    例如 fastcgi_pass php:9000;

    如果是對外暴露端口,需要通過-p或-P參數,最好使用-p。
    docker run --name nginx -p 80:80 -p 443:443 .......
    這樣瀏覽器就能存取到這台伺服器提供的Web服務了。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-25 09:03:39

    端口映射:
    就是選擇一個你本機的端口映射到你的容器的一個端口,這樣若有請求來到,訪問你本機的那個被映射的端口,這個時候就會將請求轉發到容器的那個端口,依靠容器裡的服務來處理請求。

    為什麼要有連接埠映射?
    你的本機IP是個公網ip,例如1.2.3.4;但本機的容器的ip是個虛擬ip,例如172.17.0.2。外界是無法直接存取你的容器的服務的,這個時候就透過存取本機的連接埠來達到使用容器中服務的目的。

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-25 09:03:39

    不知道所謂的「蒙圈」具體是指什麼。
    簡單的說類似於NAT的原理,如果需要宿主機網路能夠存取到容器提供的服務,需要將容器的連接埠暴露在宿主機網路中。
    常用語法是在執行"都docker run"時帶上參數"-p host_port:container_port"。

    回覆
    0
  • 取消回覆