在用 Docker 部署一個(gè)應(yīng)用程序時(shí),需要在 Docker 容器中開放一些端口,以便外部用戶可以訪問這些端口。 Docker 提供了方便的端口映射機(jī)制,使得開放端口變得方便快捷。
# docker run 格式: docker run -p: # 示例: docker run -p 80:8080 tomcat # 說明: # 將主機(jī)的80端口映射到容器的8080端口上, # 啟動(dòng)一個(gè)Tomcat容器,用戶可以通過瀏覽器訪問http:// :80來訪問Tomcat容器內(nèi)的Web應(yīng)用。
需要注意的是,通過端口映射開放的端口是暴露在主機(jī)上的。因?yàn)槿萜骺梢栽谕耆綦x的情況下運(yùn)行,所以其內(nèi)部的端口默認(rèn)情況下是不能被主機(jī)訪問的。
# 演示: $ docker run -d -p 80:8080 tomcat # 使用curl請(qǐng)求在宿主機(jī)上請(qǐng)求容器內(nèi)的Web應(yīng)用 $ curl http://localhost:8080 # 非法調(diào)用,會(huì)發(fā)現(xiàn)無法連接到容器內(nèi)的Web應(yīng)用 # 正確方式: $ docker run -d -p 127.0.0.1:80:8080 tomcat # 或者 $ docker run -d -p 0.0.0.0:80:8080 tomcat
以上示例中,在使用端口映射時(shí),需要通過主機(jī)IP地址和端口號(hào)來訪問端口的映射關(guān)系。同時(shí)還能看到,使用0.0.0.0作為綁定IP地址,使得端口映射可以被所有可見的主機(jī)IP所訪問。