上一篇我們介紹瞭如果下載和運行第三方鏡像,我們通過Nginx鏡像,運行之後,進入容器內部,查看了文件的分佈情況,這一篇我們介紹怎麼在瀏覽器中訪問docker容器內部的鏡像Nginx,在本地瀏覽器訪問就需要設置網絡。
Docker 網絡模式
Bridge 默認模式,有獨立的namespace,會有獨立的IP和端口
Host 和主機共同使用一個namespace,不需要分配IP
None 沒有網絡
–net=bridge— 默認選項,用網橋的方式來連接docker容器。
–net=host— docker跳過配置容器的獨立網絡棧。
–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
找到這個Linux的ip地址,一般情況下這個地址是192.168.99.100,然後在Windows的瀏覽器中,輸入這個地址,加上服務的端口即可啓用了。
測試一下 隨機端口使用方法:
docker run -d -P --net=bridge index.tenxcloud.com/docker_library/nginx
然後瀏覽器訪問: