亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

docker 指定IP地址、與主機同網段IP

2024-09-01 13:51:47
字體:
來源:轉載
供稿:網友

首先講一下docker的網絡模式:

我們使用docker run創建容器時,可以使用--net選項指定容器的網絡模式,docker一共有4中網絡模式:

1:bridge模式,--net=bridge(默認)。

這是dokcer網絡的默認設置。安裝完docker,系統會自動添加一個供docker使用的網橋docker0,我們創建一個新的容器時,容器通過DHCP獲取一個與docker0同網段的IP地址。并默認連接到docker0網橋,以此實現容器與宿主機的網絡互通。如下:

2:host模式,--net=host。

這個模式下創建出來的容器,將不擁有自己獨立的Network Namespace,即沒有獨立的網絡環境。它使用宿主機的ip和端口。

3:container模式,--net=container:NAME_or_ID。

這個模式就是指定一個已有的容器,共享該容器的IP和端口。除了網絡方面兩個容器共享,其他的如文件系統,進程等還是隔離開的。

4:none模式,--net=none。

這個模式下,dokcer不為容器進行任何網絡配置。需要我們自己為容器添加網卡,配置IP。

因此,若想使用pipework配置docker容器的ip地址,必須要在none模式下才可以

以下是幾種分配IP的方式:

一、pipework

首先講一下docker的網絡模式:

我們使用docker run創建容器時,可以使用--net選項指定容器的網絡模式,docker一共有4中網絡模式:

1:bridge模式,--net=bridge(默認)。

這是dokcer網絡的默認設置。安裝完docker,系統會自動添加一個供docker使用的網橋docker0,我們創建一個新的容器時,容器通過DHCP獲取一個與docker0同網段的IP地址。并默認連接到docker0網橋,以此實現容器與宿主機的網絡互通。如下:

2:host模式,--net=host。

這個模式下創建出來的容器,將不擁有自己獨立的Network Namespace,即沒有獨立的網絡環境。它使用宿主機的ip和端口。

3:container模式,--net=container:NAME_or_ID。

這個模式就是指定一個已有的容器,共享該容器的IP和端口。除了網絡方面兩個容器共享,其他的如文件系統,進程等還是隔離開的。

4:none模式,--net=none。

這個模式下,dokcer不為容器進行任何網絡配置。需要我們自己為容器添加網卡,配置IP。
因此,若想使用pipework配置docker容器的ip地址,必須要在none模式下才可以。

pipework安裝:

# wget https://github.com/jpetazzo/pipework/archive/master.zip# unzip pipework-master.zip# cp pipework-master/pipework /usr/local/bin/# chmod +x /usr/local/bin/pipework創建none模式的容器,為其分配IP。#ip a show docker0#docker run -idt --name test --net=none resin#pipework docker0 test 172.17.42.100/16@172.17.42.1#docker attach test

以上操作給新建的test容器分配了一個172.17.42.100的IP地址。

二、 docker默認使用'bridge'來設置container的網絡模式(即從與docker0同網段的未使用的IP中取一個作為container的IP),我們這里使用'none'來實現自己手動配置container的網絡。

首先我們以**--net='none'**的方式啟動一個container

[yaxin@cube2x ~]$docker run -i -t --rm --net='none' ubuntu /bin/bashroot@db84e747c362:/# ifconfig -alo    Link encap:Local Loopback     inet addr:127.0.0.1 Mask:255.0.0.0     inet6 addr: ::1/128 Scope:Host     UP LOOPBACK RUNNING MTU:65536 Metric:1     RX packets:0 errors:0 dropped:0 overruns:0 frame:0     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:0     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)root@db84e747c362:/#

可以看到,由于我們使用'none'模式,container中沒有獲取到IP,甚至連網卡都沒有,下面我們開始給container配置IP

首先獲取container的pid(我們需要通過pid獲取file descriptor)

[yaxin@cube2x ~]$docker psCONTAINER ID    IMAGE              COMMAND      CREATED      STATUS       PORTS       NAMESdb84e747c362    docker.cn/docker/ubuntu:latest "/bin/bash"    4 minutes ago   Up 4 minutes           sharp_kirch[yaxin@cube2x ~]$docker inspect -f "{{.State.Pid}}" sharp_kirch23090

ip-netns的man page中有這樣一句

By convention a named network namespace is an object at /var/run/netns/NAME that can be opened. The file descriptor resulting from opening/var/run/netns/NAME refers to the specified network namespace

因而我們需要創建一個鏈接

[yaxin@cube2x ~]$sudo ln -s /proc/23090/ns/net /var/run/netns/23090

然后創建一對端到端的網卡,將veth_db84e747c3綁定到docker0網橋,并啟動。將另一塊網卡X放到container內部

[yaxin@cube2x ~]$sudo ip link add veth_db84e747c3 type veth peer name X[yaxin@cube2x ~]$sudo brctl addif docker0 veth_db84e747c3[yaxin@cube2x ~]$sudo ip link set veth_db84e747c3 up[yaxin@cube2x ~]$sudo ip link set X netns 23090

這時查看container的IP,會發現多了一個名為X的網卡

root@db84e747c362:/# ifconfig -aX    Link encap:Ethernet HWaddr 5a:7e:4d:ba:63:1c      BROADCAST MULTICAST MTU:1500 Metric:1     RX packets:0 errors:0 dropped:0 overruns:0 frame:0     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:1000     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)lo    Link encap:Local Loopback      inet addr:127.0.0.1 Mask:255.0.0.0     inet6 addr: ::1/128 Scope:Host     UP LOOPBACK RUNNING MTU:65536 Metric:1     RX packets:0 errors:0 dropped:0 overruns:0 frame:0     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0     collisions:0 txqueuelen:0     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

然后對container內部新添加的網卡進行配置(可以通過man ip-netns更詳細查看)

[yaxin@cube2x ~]$sudo ip netns exec 23090 ip link set dev X name eth0[yaxin@cube2x ~]$sudo ip netns exec 23090 ip link set eth0 up[yaxin@cube2x ~]$sudo ip netns exec 23090 ip addr add 172.17.111.10/16 dev eth0[yaxin@cube2x ~]$sudo ip netns exec 23090 ip route add default via 172.17.42.1

注意: 指定給container的IP必須跟docker0在同一網段,且給container的網關應該為docker0的IP

最后,寫成shell腳本如下:

#!/usr/bin/env bash# filename: bind_addr.shif [ `id -u` -ne 0 ];then  echo '必須使用root權限'  exitfiif [ $# != 2 ]; then  echo "使用方法: $0 容器名字 IP"  exit 1ficontainer_name=$1bind_ip=$2container_id=`docker inspect -f '{{.Id}}' $container_name 2> /dev/null`if [ ! $container_id ];then  echo "容器不存在"  exit 2fibind_ip=`echo $bind_ip | egrep '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'`if [ ! $bind_ip ];then  echo "IP地址格式不正確"  exit 3ficontainer_minid=`echo $container_id | cut -c 1-10`container_netmask=`ip addr show docker0 | grep "inet/b" | awk '{print $2}' | cut -d / -f2`container_gw=`ip addr show docker0 | grep "inet/b" | awk '{print $2}' | cut -d / -f1`bridge_name="veth_$container_minid"container_ip=$bind_ip/$container_netmaskpid=`docker inspect -f '{{.State.Pid}}' $container_name 2> /dev/null`if [ ! $pid ];then  echo "獲取容器$container_name的id失敗"  exit 4fiif [ ! -d /var/run/netns ];then  mkdir -p /var/run/netnsfiln -sf /proc/$pid/ns/net /var/run/netns/$pidip link add $bridge_name type veth peer name Xbrctl addif docker0 $bridge_nameip link set $bridge_name upip link set X netns $pidip netns exec $pid ip link set dev X name eth0ip netns exec $pid ip link set eth0 upip netns exec $pid ip addr add $container_ip dev eth0ip netns exec $pid ip route add default via $container_gw運行并寫入ip和容器名稱 配置容器與主機IP同一網段先配置主機br0 vi /etc/sysconfig/network-scripts/ifcfg-br0DEVICE=br0TYPE=BridgeBOOTPROTO=staticONBOOT=yesDELAY=0STP=yesIPADDR=192.168.2.111NETMASK=255.255.255.0GATEWAY=192.168.2.1/etc/init.d/network restartdocker run -itd --name test centos /bin/bashpipework br0 test 192.168.2.201/24@192.168.2.1

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.欧美视频| 91成人国产在线观看| 久久精品在线视频| 国产一区二区精品丝袜| 日韩视频―中文字幕| 日本免费一区二区三区视频观看| 永久免费毛片在线播放不卡| 亚洲精品一区二三区不卡| 日韩av最新在线观看| 日韩av电影手机在线观看| 91亚洲永久免费精品| 国产精品视频一区二区三区四| 日本高清不卡在线| 国产精品久久久亚洲| 在线成人免费网站| 精品久久香蕉国产线看观看gif| 538国产精品一区二区在线| 国产日韩欧美成人| 欧美日韩一二三四五区| 亚洲成人黄色在线| 伊人久久久久久久久久久久久| 狠狠色香婷婷久久亚洲精品| 欧美日韩色婷婷| 欧美高清第一页| 97免费视频在线| 欧美日韩国产丝袜美女| 亚洲欧美第一页| 久久影院资源网| 亚洲日韩中文字幕在线播放| 亚洲精品美女网站| 91超碰中文字幕久久精品| 欧美极品少妇全裸体| 丝袜亚洲另类欧美重口| 久久国产精品视频| 亚洲国产精品系列| 久久视频精品在线| 亚洲性生活视频在线观看| 亚洲新中文字幕| 成人情趣片在线观看免费| 秋霞av国产精品一区| 久久久久久久久91| 久久精品中文字幕| 一区二区三区在线播放欧美| 国产丝袜一区视频在线观看| 欧美一区二区三区图| 久久精品91久久香蕉加勒比| 国产精品午夜国产小视频| 日韩欧美综合在线视频| 久久久久久噜噜噜久久久精品| 国产91ⅴ在线精品免费观看| 亚洲偷熟乱区亚洲香蕉av| 揄拍成人国产精品视频| 精品久久久av| 日韩精品中文字幕视频在线| 国产专区欧美专区| 欧美电影电视剧在线观看| 国产精品男人的天堂| 日本中文字幕久久看| 亚洲一区二区三区四区在线播放| 成人日韩在线电影| 亚洲精品大尺度| 亚洲精品一区久久久久久| 亚洲女人初尝黑人巨大| 精品在线欧美视频| 亚洲高清av在线| 久久久人成影片一区二区三区观看| 在线精品高清中文字幕| 精品久久久久久久久久久久久久| 日韩最新在线视频| 日本成熟性欧美| 日本久久久久久久久| 中文字幕久久亚洲| 欧洲亚洲女同hd| 日韩成人网免费视频| 国产亚洲欧洲高清| 国产激情999| 日本中文字幕不卡免费| 久色乳综合思思在线视频| 欧美精品videossex88| 在线观看久久av| 亚洲女人天堂色在线7777| 国产成人涩涩涩视频在线观看| 色综合伊人色综合网站| 日韩av在线网址| 中文字幕日韩欧美在线| 成人黄色片网站| 久久久亚洲影院| 91精品免费久久久久久久久| 亚洲欧美日韩中文在线制服| 精品久久久久久久久久国产| 久久久久久久网站| 色综合视频一区中文字幕| 91免费在线视频| 日韩电影中文字幕一区| 久久噜噜噜精品国产亚洲综合| 国产噜噜噜噜久久久久久久久| 国产精品丝袜久久久久久不卡| 日本久久久久久久久久久| 亚洲欧美日韩一区二区在线| 亚洲欧洲在线视频| 国产69精品久久久| 亚洲伊人一本大道中文字幕| 国产欧亚日韩视频| 亚洲精品大尺度| 91久久夜色精品国产网站| 中文字幕精品久久久久| 亚洲精品永久免费精品| 中文字幕少妇一区二区三区| 国产精品一二三在线| 4438全国成人免费| 97在线观看免费| 中文字幕精品av| 日韩av中文字幕在线播放| 国产亚洲精品久久久| 成人精品网站在线观看| 精品成人乱色一区二区| 国产手机视频精品| 在线视频日本亚洲性| 国产精品91免费在线| 亚洲激情视频在线播放| 精品亚洲国产成av人片传媒| 高清在线视频日韩欧美| 国产精品草莓在线免费观看| 国产美女精品视频免费观看| 萌白酱国产一区二区| 亚洲夜晚福利在线观看| 精品国产31久久久久久| 欧美极品美女视频网站在线观看免费| 国产日产久久高清欧美一区| 亚洲网站在线播放| 亚洲男女自偷自拍图片另类| 久久久黄色av| 日韩av在线天堂网| 爽爽爽爽爽爽爽成人免费观看| 成人精品久久av网站| 成人动漫网站在线观看| 日韩美女毛茸茸| 97视频人免费观看| 性亚洲最疯狂xxxx高清| 成人福利网站在线观看11| 欧美黄色片在线观看| 国产91精品久久久久| 中文字幕亚洲字幕| 国产一区二区日韩精品欧美精品| 欧美巨乳在线观看| 亚洲一区二区少妇| 日韩最新中文字幕电影免费看| 亚洲精品美女在线观看| 综合网中文字幕| 另类少妇人与禽zozz0性伦| 日韩中文字幕国产精品| 国产日韩欧美一二三区| 一区二区三区视频免费| 亚洲一区二区三区乱码aⅴ| 日本中文字幕不卡免费| 亚洲国产成人精品一区二区| 操91在线视频| 色吧影院999| 91亚洲精品在线| 大荫蒂欧美视频另类xxxx| 亚洲视频欧洲视频| 日韩欧美成人免费视频| 欧美精品videofree1080p| 日韩精品久久久久久久玫瑰园|