为Docker设置固定IP及使用Weave管理工具的方法

时间:2023-10-09 10:41:42 

这篇文章主要介绍了为Docker设置固定IP及使用weave管理工具的方法,Docker容器是当下虚拟机及集群部署方面最火热的技术,需要的朋友可以参考下为docker配置固定ip
首先,配置一个用于创建container interface的网桥,可以使用ovs,也可以使用Linux bridge,以Linux bridge为例:

复制代码代码如下:


br_name=docker
brctl addbr $br_name
ip addr add 192.168.33.2/24 dev $br_name
ip addr del 192.168.33.2/24 dev em1
ip link set $br_name up
brctl addif $br_name eth0

接着,可以启动容器了,注意用--net=none方式启动:

复制代码代码如下:


# start new container
hostname='docker.test.com'
cid=$(docker run -d -i -h $hostname --net=none -t centos)
pid=$(docker inspect -f '{{.State.Pid}}' $cid)

下面,为该容器配置网络namespace,并设置固定ip:

复制代码代码如下:


# set up netns
mkdir -p /var/run/netns
ln -s /proc/$pid/ns/net /var/run/netns/$pid
# set up bridge
ip link add q$pid type veth peer name r$pid
brctl addif $br_name q$pid
ip link set q$pid up
# set up docker interface
fixed_ip='192.168.33.3/24'
gateway='192.168.33.1'
ip link set r$pid netns $pid
ip netns exec $pid ip link set dev r$pid name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add $fixed_ip dev eth0
ip netns exec $pid ip route add default via 192.168.33.1

这样,容器的网络就配置好了,如果容器内部开启了sshd服务,通过192.168.33.3就可以直接ssh连接到容器,非常方便。上面的步骤比较长,可以借助pipework来为容器设置固定ip(除了设置IP,还封装了配置网关、macvlan、vlan、dhcp等功能):

复制代码代码如下:


pipework docker0 be8365e3b2834 10.88.88.8/24

那么,当容器需要删除的时候,怎么清理网络呢,其实也很简单:

复制代码代码如下:


# stop and delete container
docker stop $cid
docker rm $cid
# delete docker's net namespace (also delete veth pair)
ip netns delete $pid




使用weave管理docker网络

weave简单使用

复制代码代码如下:


sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave


复制代码代码如下:


sudo chmod a+x /usr/local/bin/weave

启动weave路由器,这个路由器其实也是在docker中启动的:

复制代码代码如下:


[root@h-46mow360 ~]# weave launch

Unable to find image 'zettio/weave' locally
3b3a3db2c186fccb5203dcc269b3febbbbf126591a7ebd8117a8a5250683749f

复制代码代码如下:


[root@h-46mow360 ~]# brctl show

bridge name bridge id       STP enabled interfaces
docker0     8000.56847afe9799   no      veth801050a
weave       8000.7afc2a03325e   no      vethwepl2146

复制代码代码如下:


[root@h-46mow360 ~]# docker ps

CONTAINER ID        IMAGE                           COMMAND                CREATED              STATUS              PORTS                                            NAMES
3b3a3db2c186        zettio/weave:git-a34e214201cb   "/home/weave/weaver    About a minute ago   Up About a minute   0.0.0.0:6783->6783/tcp, 0.0.0.0:6783->6783/udp   weave
在两台物理机上分别启动一个容器:

复制代码代码如下:


c1=$(weave run 10.0.3.3/24 -t -i -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run systemd:systemd /usr/lib/systemd/systemd)
c2=$(weave run 10.0.3.5/24 -t -i -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run systemd:systemd /usr/lib/systemd/systemd)
这个时候,两个容器之间是不通的,需要在两台weave的路由器之间建立连接:( if there is a firewall between $HOST1 and $HOST2, you must open port 6783 for TCP and UDP)

复制代码代码如下:

weave connect 10.33.0.9
这样,两台容器之间通了:

复制代码代码如下:


# nsenter --mount --uts --ipc --net --pid --target $(docker inspect --format "{{.State.Pid}}" "$c2")

复制代码代码如下:


-bash-4.2# ping -c 3 10.0.3.3
PING 10.0.3.3 (10.0.3.3) 56(84) bytes of data.
64 bytes from 10.0.3.3: icmp_seq=1 ttl=64 time=2.34 ms
64 bytes from 10.0.3.3: icmp_seq=2 ttl=64 time=1.52 ms
64 bytes from 10.0.3.3: icmp_seq=3 ttl=64 time=1.13 ms

--- 10.0.3.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.131/1.667/2.345/0.505 ms
 
weave其他特性
 
•应用隔离:不同子网容器之间默认隔离的,即便它们位于同一台物理机上也相互不通;不同物理机之间的容器默认也是隔离的
 •物理机之间容器互通:weave connect $OTHER_HOST
 •动态添加网络:对于不是通过weave启动的容器,可以通过weave attach 10.0.1.1/24 $id来添加网络(detach删除网络)
 •安全性:可以通过weave launch -password wEaVe设置一个密码用于weave peers之间加密通信
 •与宿主机网络通信:weave expose 10.0.1.102/24,这个IP会配在weave网桥上
 •查看weave路由状态:weave ps
 •通过NAT实现外网访问docker容器

标签:Docker,IP,weave
0
投稿

猜你喜欢

  • Excel制作显示预算额、实际额和差额关系的图形教程

    2022-09-27 00:59:28
  • 为什么使用键盘按键进入不了BIOS界面?电脑无法进入到BIOS界面介绍

    2022-12-24 03:31:49
  • Win10系统开始菜单应用程序不见了怎么办

    2023-06-19 00:52:32
  • Little Snitch如何在网络监视器中管理规则?

    2022-04-08 02:32:30
  • Win7绝地求生鼠标出现偏移这么解决?

    2022-05-28 20:16:22
  • excel 透视表的无法插入切片器如何解决

    2023-01-25 14:24:38
  • 如何快速打开wps表格

    2023-12-11 12:00:24
  • Win7麦克风没有声音怎么办_麦克风没有声音解决方法

    2023-08-23 14:36:55
  • mac电脑上制作iphone铃声的操作方法

    2022-09-17 18:16:46
  • Excel图表查看哪个时间段哪种产品的销量,任你选择

    2023-09-21 05:16:32
  • 腾讯管家粉碎文件在哪里-腾讯管家粉碎文件使用方法

    2023-12-12 06:41:47
  • 怎么在网易考拉中拼团购买物品 网易考拉中拼团购买物品的具体步骤

    2023-10-20 06:25:51
  • Win8系统中打开任务计划的方法步骤是什么?

    2023-03-22 15:15:17
  • 百度魔图怎么PK大咖?百度魔图怎么PK明星脸?

    2022-10-31 07:46:14
  • Excel怎么计算拟收费金额?

    2023-05-06 06:23:15
  • 腾讯云游戏检测DWM未开启怎么办?腾讯云游戏DWM开启的方法

    2023-01-18 13:04:12
  • 腾讯管家弹窗怎么拦截-腾讯管家弹窗拦截方法

    2022-07-01 02:02:44
  • Win7桌面图标显示不正常怎么办?

    2022-09-23 21:33:38
  • InDesign 教程「54」,如何在表格中添加和重新排序图像?

    2023-06-30 05:59:16
  • 如何修改wps演示图片形状

    2023-08-05 03:28:15
  • asp之家 电脑教程 m.aspxhome.com