Docker網絡管理

Docker網絡管理
一、Docker的四種網絡模式(host、container、none、bridge)
1、 host模式,使用docker run時使用–net=host指定,docker使用的網絡實際上和宿主機一樣,在容器內看到的網卡ip是宿主機上的ip
# docker run -it –rm –net=host httpd bash
2、container模式,使用–net=container:container_id/container_name多個容器使用共同的網絡,看到的ip是一樣的
3、none模式,使用–net=none指定:這種模式下不會配置任何網絡
4、bridge模式,使用–net=bridge指定,默認模式,不用指定,默認就是這種模式,這種模式會爲每個容器分配一個獨立的Network Namespace。類似於vmware的nat網絡模式,同一個宿主機上的所有容器會在同一個網段下,相互之間可以通信
二、外部訪問容器(端口映射)
1、創建一個容器
# docker run -itd httpd bash
2、進入到該容器並且安裝httpd服務,然後啓動服務
# docker exec -it 3e7 bash
# yum -y install httpd
# /usr/sbin/httpd
3、把該容器生成一個新的鏡像
# docker commit -m “httpd-server” -a “fansik” 3e7 httpd
4、使用新鏡像創建容器,並制定端口映射
# docker run -itd -p 5123:80 httpd bash
5、進入容器,啓動httpd服務
# docker exec -it 0d6 bash
# /usr/sbin/httpd
6、編輯個頁面
# vi /var/www/html/index.html
隨便寫點東西就可以
7、退出容器測試
# curl localhost:5123
-p後面也支持ip:port:ip:port的格式,比如:
-p 127.0.0.1:8080:80
也可以不寫本地端口,只寫ip,這樣會隨意分配一個端口:
-p 127.0.0.1::80
三、容器互聯
下載一個mysql的鏡像
# docker pull mysql
新建一個容器名字叫mysql
# docker run -itd -p 3306:3306 –name mysql mysql bash
再新建一個容器,並和mysql互聯
# docker run -itd -p 1725:80 –name web –link mysql:mysql httpd bash
在web上於女性env命令可以查看到關於mysql的環境變量
四、配置橋接網絡
centos7的配置方法:
1、爲了使本地網絡中的機器和Docker容器更方便的通信,我們經常會有將Docker容器配置到和主機同一網段的需求,這個需求其實很容易實現,我們只要將Docker容器和宿主機的網卡橋接起來,再給Docker容器配上IP就可以啦。
2、安裝pipework
git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin
3、開啓一個容器:
docker run -itd –net=none –name fansik centos /bin/bash
4、# pipework br0 fansik 10.10.10.202/[email protected]
10.10.10.202爲容器ip,@後面的ip爲宿主機的ip
5、# brctl addif br0 eth0
eth0爲宿主機的網卡,這一步爲把br0和eth0橋接起來
6、# docker exec -it fansik /bin/bash
進去後ifconfig查看就可以看到新添加的ip
centos6的配置方法:
1、配置網卡信息
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
# vim ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.201
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
DNS1=192.168.1.1
重啓網卡:/etc/init.d/network restart
2、安裝pipework
git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin
3、開啓一個容器:
# docker run -itd –net=none –name fansik httpd bash
4、升級iproute否則創建橋接網絡是會報錯:Object “netns” is unknown,try “ip help”
# rpm -Uvh https://repos.fedorapeople.org/openstack/EOL/openstack-grizzly/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
5、# pipework br0 fansik 192.168.1.250/24 //爲容器添加ip
6、 # docker exec -it fansik bash //進到容器用ifconfig命令就可以看到新添加的ip了
分類: Docker

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章