docker網絡卡設定
1、Vmware的網絡卡設定
(1)Bridged(橋接)方式
用這種方式虛擬機器的IP可設定成與本機在同一網段,虛擬機器相當於網路內的一臺獨立的機器,網路內其他機器可訪問虛擬機器,虛擬機器也可訪問網路內其他機器,當然與本機系統的雙向訪問也不成問題。
這個時候vmware就模擬成一個網橋的功能,就只使用 vmnet1網絡卡,vmnet8就可以不用;
(2)NAT(網路地址轉換)方式
這種方式也可以實現本機與虛擬機器的雙向訪問。但網路內其他機器不能訪問虛擬機器,虛擬機器可通過本機用NAT協議訪問網路內其他機器。
現在vmware就模擬成了一個具有DHCP功能的路由器,這個時候就要用vmnet8了。
(3)host-only方式
這種方式只能進行虛擬機器和主機之間的網路通訊,即:網路內其他機器不能訪問虛擬機器,同時虛擬機器也不能訪問其他機器。
2、優缺點
(1)內建bridge(nat)
缺點:
需要配套服務註冊/發現,否則宿主上埠分配困難,容易衝突。
由於每個容器暴露的埠都不一致,造成前端路由層nginx配置(proxy_pass)裡無法使用dns的方式。
埠對映要在容器啟動時就指定好,後期無法變更。
(2)自建橋接網路
優點:
每個容器都有獨立ip,對外提供服務,如nginx+php,nginx+resin,都可以使用預設的80埠
由於容器暴露埠都可以使用80埠,因此前端路由層nginx配置(proxy_pass)裡可以使用dns的方式。
無需為了後期埠對映新增而煩惱
3、操作步驟
停止服務
/etc/init.d/docker stop
關掉docker0
ifconfig docker0 down
刪除docker
brctl delbr docker0
增加網橋br0
yum install bridge-utils
CentOS6.5下的配置:
vim /etc/sysconfig/docker
other_args="-b=br0"
配置bridge橋接網路:
在/etc/sysconfig/network-scripts/下,修改ifcfg-eth0網絡卡配置,同時增加ifcfg-br0橋接網絡卡配置如下:
vi ifcfg-eth0內容如下:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
BRIDGE=br0
vi ifcfg-br0內容如下:
DEVICE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
TYPE=Bridge
啟動docker服務
4、問題排查
1、如果出現
使用docker run --net=bridge --dns=223.5.5.5 --dns=223.6.6.6 -d -i -t jdeathe/centos-ssh /bin/bash方式啟動,然後進入容器之後就可以ping www.baidu.com
2、在安裝jdk的過程中,如果直接在容器裡面下載jdk版本,會出現下載檔案失敗,檔案的大小隻有50多k,所以在解壓過程會失敗。因此可以採用宿主機共享資料夾的方式。所以啟動容器的指令為:
docker run --net=bridge --dns=223.5.5.5 --dns=223.6.6.6 -d -i -t -v /alidate/soft/:/alidate/soft jdeathe/centos-ssh /bin/bash
-v就是掛載資料卷。後面跟的就是 本地目錄:容器目錄