云計算-10-Docker網(wǎng)絡(luò)使用
外部訪問容器
在容器中運行的網(wǎng)絡(luò)應(yīng)用寨典,需要讓外部可以訪問這些應(yīng)用旱爆,我們可以通過
- -p:可以指定要映射的IP和端口
-
-P: Docker 會隨機映射一個
49000~49900
的端口到內(nèi)部容器開放的網(wǎng)絡(luò)端口
參數(shù)來指定端口映射。
使用命令運行nginx浑此,-P指令隨機映射一個端口映射容器內(nèi)部端口
docker?run?--name?mynginx2?-d?-P?nginx
我們使用docker ps
?或者docker container ls
可以看到,宿主機的49154端口被映射到了容器的80端口,此時通過訪問宿主機的49154就可以訪問nginx默認(rèn)頁面
- 使用curl訪問
curl?http://localhost:49154
- 在瀏覽器上訪問
使用docker logs
命令查看容器日志
語法格式:
docker?logs?[OPTIONS]?容器名
OPTIONS注解:
- -f:持續(xù)跟蹤日志輸出,如果不退出允跑,就可以持續(xù)觀察容器日志
ctrl + z
退出
docker?logs?-f?mynginx2
- --tail:列出最新的N條容器日志
?docker?logs?--tail?4??mynginx2
首先我們先將我們之前運行的容器全部刪除
?docker?rm?-f?$(docker?ps?-qa)??#刪除運行的全部容器
使用Docker link 容器鏈接
我們可以使用docker link鏈接容器,避免容器重啟ip地址變化的問題
格式如下:
docker?run??--link=[容器名]:[別名]??
- 運行鏡像centos名稱為mycentos1的容器
docker?run?--name?mycentos1?-itd?-P??centos
- 啟動mycentos2容器使用--link鏈接mycentos1容器
docker?run?--name?mycentos2?--link=mycentos1:webcentos?-itd?-P??centos
測試
我們進(jìn)入mycentos2容器
docker?exec?-it?mycentos2?/bin/bash
查看容器的hosts,發(fā)現(xiàn)了別名webcentos的ip地址
cat?/etc/hosts
ping mycentos1
容器的ip別名webcentos
,發(fā)現(xiàn)容器可以ping通
自定義網(wǎng)絡(luò)實現(xiàn)容器互聯(lián)
Docker默認(rèn)網(wǎng)絡(luò)
docker創(chuàng)建以后默認(rèn)使用的是Linux的橋連接,在宿主機上虛擬創(chuàng)建了一個容器網(wǎng)橋(docker0),使用ip addr
查看
Docker每啟動一個容器就會根據(jù)docker0
的網(wǎng)段分配給容器一個IP地址聋丝,這個網(wǎng)橋docker0是所有容器的默認(rèn)網(wǎng)關(guān)索烹。因為宿主機內(nèi)容器都使用網(wǎng)橋docker0,所以容器可以使用IP進(jìn)行通信潮针。
Docker就是很好的利用了Linux虛擬網(wǎng)絡(luò)技術(shù)术荤,在宿主機和容器內(nèi)分別創(chuàng)建一個虛擬接口,實現(xiàn)他們彼此聯(lián)通.
網(wǎng)絡(luò)模式
網(wǎng)絡(luò)模式配置說明bridge模式--net=bridge默認(rèn)使用每篷,在docke的默認(rèn)網(wǎng)橋docker0上為容器創(chuàng)建網(wǎng)絡(luò)none模式--net=none不配置網(wǎng)絡(luò)瓣戚,用于稍后進(jìn)入容器,自行配置網(wǎng)絡(luò)container模式--net=container:name/id容器可以和應(yīng)一個容器共享network namespace,k8s的pod使用此模式hots模式--net=host容器和宿主機共享Network namespace用戶自定義--net=createnet用戶使用network相關(guān)指令創(chuàng)建網(wǎng)絡(luò)container模式
Docker的container模式是指焦读,創(chuàng)建容器的時候子库,使用--net=container:name/id,指定創(chuàng)建的容器和已經(jīng)有的容器共享一個Network Namespace矗晃。
- 根據(jù)centos鏡像創(chuàng)建mycentos1容器
docker?run?--name?mycentos1?-itd?centos
- 根據(jù)centos創(chuàng)建鏡像mycentos2
docker?run?--name?mycentos2?--net=container:mycentos1?-itd?centos
- 進(jìn)入mycentos2容器
docker?exec?-it?mycentos2??/bin/bash
- 查看ip
?cat?/etc/hosts
host模式
docker網(wǎng)絡(luò)的host模式容器和宿主機共享Network namespace
- 創(chuàng)建mycentos3容器模式host
docker?run?--name?mycentos3?-it?--net=host?centos?/bin/bash
bridge 模式
默認(rèn)選擇bridge模式仑嗅,容器啟動后通過網(wǎng)橋docker0獲取ip地址
- 創(chuàng)建mycentos4使用bridge模式
docker?run?--name?mycentos4?-it??centos?/bin/bash
用戶自定義模式
新建網(wǎng)絡(luò)
我們首先使用docker network
創(chuàng)建一個新的docker網(wǎng)絡(luò)
docker?network?create?-d?bridge??testnet
-d指定docker的網(wǎng)絡(luò)模型,有bridge张症、overlay
,然后overlay網(wǎng)絡(luò)模型使用的是Swarm mode仓技。
自定義網(wǎng)絡(luò)容器鏈接
- 創(chuàng)建容器mycentos5并連接到testnet網(wǎng)絡(luò)
docker?run?-it?--name?mycentos5?--network?testnet?centos?/bin/bash
- 打開新的終端,在運行容器mycentos6加入testnet網(wǎng)絡(luò)
docker?run?-it?--name?mycentos6?--network?testnet?centos?/bin/bash
- 再打開新終端查看容器信息
docker?ps?
使用ping來證明mycentos6容器和mycentos5可以相互鏈接
同理在mycentos5可以和mycentos5相互鏈接
如果您覺得本文不錯俗他,歡迎關(guān)注,點贊,收藏支持脖捻,您的關(guān)注是我堅持的動力!
原創(chuàng)不易羡亩,轉(zhuǎn)載請注明出處摩疑,感謝支持!如果本文對您有用畏铆,歡迎轉(zhuǎn)發(fā)分享雷袋!