docker 連接埠映射 有點蒙圈 誰給解釋一下
ringa_lee
容器間互相存取需在容器建立時使用--link參數,並且最好被連接的容器已經命名過。
docker run --name mysql .......docker run --name php --link mysql .......docker run --name nginx --link php .......
docker run --name mysql .......
docker run --name php --link mysql .......
docker run --name nginx --link php .......
以這種方式啟動時,只需要在程式內使用對應的容器名稱即可存取對應的服務。 例如 fastcgi_pass php:9000;
fastcgi_pass php:9000;
如果是對外暴露端口,需要通過-p或-P參數,最好使用-p。 docker run --name nginx -p 80:80 -p 443:443 .......這樣瀏覽器就能存取到這台伺服器提供的Web服務了。
docker run --name nginx -p 80:80 -p 443:443 .......
端口映射:就是選擇一個你本機的端口映射到你的容器的一個端口,這樣若有請求來到,訪問你本機的那個被映射的端口,這個時候就會將請求轉發到容器的那個端口,依靠容器裡的服務來處理請求。
為什麼要有連接埠映射? 你的本機IP是個公網ip,例如1.2.3.4;但本機的容器的ip是個虛擬ip,例如172.17.0.2。外界是無法直接存取你的容器的服務的,這個時候就透過存取本機的連接埠來達到使用容器中服務的目的。
不知道所謂的「蒙圈」具體是指什麼。 簡單的說類似於NAT的原理,如果需要宿主機網路能夠存取到容器提供的服務,需要將容器的連接埠暴露在宿主機網路中。 常用語法是在執行"都docker run"時帶上參數"-p host_port:container_port"。
容器間互相存取需在容器建立時使用--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服務了。
端口映射:
就是選擇一個你本機的端口映射到你的容器的一個端口,這樣若有請求來到,訪問你本機的那個被映射的端口,這個時候就會將請求轉發到容器的那個端口,依靠容器裡的服務來處理請求。
為什麼要有連接埠映射?
你的本機IP是個公網ip,例如1.2.3.4;但本機的容器的ip是個虛擬ip,例如172.17.0.2。外界是無法直接存取你的容器的服務的,這個時候就透過存取本機的連接埠來達到使用容器中服務的目的。
不知道所謂的「蒙圈」具體是指什麼。
簡單的說類似於NAT的原理,如果需要宿主機網路能夠存取到容器提供的服務,需要將容器的連接埠暴露在宿主機網路中。
常用語法是在執行"都docker run"時帶上參數"-p host_port:container_port"。