• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    为Docker设置固定IP及使用Weave管理工具的方法
    为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容器
    上一篇:Android X86强制竖屏怎么办?安卓(Android)x86屏幕旋转成横屏解决方法
    下一篇:hyper-v虚拟机鼠标不能无法捕捉该怎么办?
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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