前戲
查看網絡模式:
docker network ls
默認的三種網絡模式:
- bridge:橋接模式
- host:主機模式
- none:無網絡模式
bridge橋接模式
橋接模式是docker 的默認網絡設置,當Docker服務啟動時,會在主機上創建一個名為docker0的虛擬網橋,並選擇一個和宿主機不同的IP地址和子網分配給docker0網橋
當我們啟動一個容器時,會橋接到docker0網卡上,在通過Nat技術就實現了外網訪問docker容
docker0 是啟動docker服務時分配的網橋,77和83是啟動一個容器時分配的網橋(bridge模式時才會有)
host模式
host 模式:該模式下容器是不會擁有自己的ip地址,而是使用宿主機的ip地址和端口
host模式是使用的宿主機的ip和端口,不會生成一個網卡橋接到docker0模式。
拉取nginx鏡像
docker pull nginx
啟動nginx容器,--net=host 指明網絡模式為host,如果不指明,默認為bridge
docker run -d --net=host nginx
防火牆放開80端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
啟動容器時沒有指定端口號,我們直接訪問宿主機的80端口是可以訪問到nginx的
host的缺點就是只能啟動一個相同的服務,比如nginx鏡像的端口都是80,你在宿主機上啟動一個就占用了宿主機的80端口,在啟動一個nginx就會報錯
none模式
none模式:關閉模式
無法連外網
比較少用,了解有這種網絡模式即可
特權模式
也比較少用,了解即可
啟動一個普通的容器
docker run -itd --name mycentos centos:7 /bin/bash
安裝網絡工具:
yum -y install net-tools
執行route -n 查看網關
刪除網關
route del default gw 172.17.0.1
這樣會提示權限
啟動擁有特權模式的容器:只需要在啟動容器的時候加上--privileged=true就可以了
docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash