docker的網絡有四種連接方式
- 1、bridge:將網絡駕到默認的docker:0橋上,橋再二層轉發給宿主機的物理網卡,通過SNAT與DNAT和外部通信
- 2、host :將網絡直接駕到宿主機網卡上,直接與外部通信,有風險不推薦使用
開放式容器 - 3、none :駕到none上,封閉式容器,不與外部通信
- 4、聯盟式容器:是指使用某個已存在容器的網絡接口的容器,接口
被聯盟內的各容器共享使用;因此,聯盟式容器彼此間完全無
隔離,兩個在同一聯盟內的容器通過loopback通信
可以使用docker network list查看容器網絡
注入,在啓動之前就設定好某些屬性,例如:
docker run --name bbox1 --rm --net bridge -it --hostname bbox1.lvqing.com --dns 223.5.5.5 --add-host node1.lvqing.com:192.168.31.200 busybox
在啓動容器時指定暴露哪些端口,能自動生成iptables的規則
-p選項的使用格式
-p <containerPort>
將指定的容器端口映射至主機所有地址的一個動態端口
-p <hostPort>:<containerPort>
將容器端口<containerPort>映射至指定的主機端口<hostPort>
-p <ip>::<containerPort>
將指定的容器端口<containerPort>映射至主機指定<ip>的動態端口
-p <ip>:<hostPort>:<containerPort>
將指定的容器端口<containerPort>映射至主機指定<ip>的端口<hostPort>
“動態端口”指隨機端口,具體的映射結果可使用docker port命令
查看
實驗:busybox暴露80端口啓動httpd服務
1、創建容器
docker run --name bbox2 --rm --net bridge -it -p 80 busybox
2、 在busybox種啓動httpd服務
httpd -h /data/html
3、 查看在宿主機上映射的端口號
docker port bbox2
4、 訪問測試
curl http://192.168.31.200:32768
<h1>bbox1 server</h1>
還可以自己創建虛擬網橋
docker network create -d bridge --subnet=172.31.0.0/16 --ip-range=172.31.0.0/16 --gateway=172.31.0.1 mybr0
docker run --name bbox1 --rm -it --net mybr0 busybox
還可以給容器添加或者刪除網卡
docker network connect|disconnect bridge bbox1