雲端與容器基礎
$ docker run -d -p 8080:80 nginx以上面的指令,從在連接埠80等待連線的 Web 伺服器映像檔 nginx 啟動容器。主機的IP位址為 192.0.2.10,且沒有防火牆等限制。從同一網路中另一台PC的瀏覽器連線到這個 Web 伺服器的URL,下列何者正確?
- Ahttp://192.0.2.10:80/
- Bhttp://(容器的IP位址):8080/
- Chttp://192.0.2.10:8080/
查看答案與解析
正確答案:C. http://192.0.2.10:8080/
寫法是 -p 主機的連接埠:容器的連接埠,因此 -p 8080:80 是把到達主機連接埠8080的通訊,轉送到容器連接埠80的設定。從另一台PC要連到主機IP位址的連接埠8080。容器的IP位址一般屬於主機內部的虛擬網路,從外部的PC無法直接到達。Dockerfile 的 EXPOSE 80 只是表示容器使用的連接埠的紀錄,單憑它不會公開主機的連接埠,因此需要 -p 的設定。
- A. 主機的連接埠80沒有被分配任何東西。80是容器那一側的連接埠。
- B. 容器的IP位址屬於主機內部的虛擬網路,一般無法從外部的PC到達。而且容器等待連線的是80,不是8080。
- C. 正確。前面是主機的連接埠,後面是容器的連接埠。