Docker之網絡和Nginx瀏覽器訪問

上一篇我們介紹瞭如果下載和運行第三方鏡像,我們通過Nginx鏡像,運行之後,進入容器內部,查看了文件的分佈情況,這一篇我們介紹怎麼在瀏覽器中訪問docker容器內部的鏡像Nginx,在本地瀏覽器訪問就需要設置網絡。

Docker 網絡模式

Bridge 默認模式,有獨立的namespace,會有獨立的IP和端口

Host 和主機共同使用一個namespace,不需要分配IP

None  沒有網絡

net=bridge— 默認選項,用網橋的方式來連接docker容器。

net=hostdocker跳過配置容器的獨立網絡棧。

net=container:NAME_or_ID— 告訴docker讓這個新建的容器使用已有容器的網絡配置。

net=none— 告訴docker爲新建的容器建立一個網絡棧,但不對這個網絡棧進行任何配置,所以只能訪問本地網絡,沒有外網。


啓動Nginx鏡像

啓動Nginx之前,我們需要在啓動的時候設置好端口,通過端口映射訪問服務。Docker默認的網絡模式是Bridge模式。

查看運行端口設置

docker run --help

-p 是指定本機端口到容器端口

-P 是隨機本機端口到容器端口


重新啓動nginx,配置端口映射

docker run -d -p 8080:80 index.tenxcloud.com/docker_library/nginx

指定網絡模式:--net=bridge 默認模式

docker run -d -p 8080:80 --net=bridge index.tenxcloud.com/docker_library/nginx

其中8080是指主機的端口,而80是指容器的端口

我們先看一下端口的狀態

netstat -na|grep 8080

或者通過docker port name 查看端口信息


瀏覽器訪問:


特別注意:本文是在Windows下對docker端口進行映射,但是當你在主機的瀏覽器中,打開localhost:port無法訪問對應的服務。

解決方案

  docker是運行在Linux上的,在Windows中運行docker,實際上還是在Windows下先安裝了一個Linux環境,然後在這個系統中運行的docker。也就是說,服務中使用的localhost指的是這個Linux環境的地址,而不是我們的宿主環境Windows。我們可以通過命令:

docker-machine ip default


找到這個Linuxip地址,一般情況下這個地址是192.168.99.100,然後在Windows的瀏覽器中,輸入這個地址,加上服務的端口即可啓用了。

測試一下 隨機端口使用方法:

docker run -d -P --net=bridge index.tenxcloud.com/docker_library/nginx

然後瀏覽器訪問:




發佈了117 篇原創文章 · 獲贊 94 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章