添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Software-Defined Networking for Linux Containers(SDN). Pipework是一个Docker网络配置工具,由200多行shell实现, 来帮助你自动打通容器之间的网络连接,pipework允许你在一个复杂的环境下把容器连接在一起,pipework使用cgroup和namespace来和LXC容器协同工作,当然也可以和docker来一起工作。

  • Docker 创建容器时,默认模式是 Bridge 模式。但是这个 Bridge 模式仅限于本机的 docker0,而不是像 VMware 虚拟机的 Bridge 模式一样可以得到主机所在 LAN 的 IP 地址。
  • 为了让局域网下的其他主机可以直接访问Docker容器,就像访问一台逻辑上的主机一样,无需经过NAT转换和端口映射,此时就需要Pipework进行配置
  • 注:当你在docker中使用pipework之前,先去docker用户列表中询问一下,docker是否已经有了更加原生方法来实现相同的功能,这样你应该不用pipework,pipework后面应该被淘汰的。如果当前版本的docker真的没有办法使你的docker容器集中在一起,那么只能使用pipework了。

    安装pipework

    git clone https://github.com/jpetazzo/pipework.git
    sudo cp -rp pipework/pipework /usr/local/bin/

    使用 pipework 配置容器 IP

        $ docker run --name ip-test -it --net=none centos /bin/bash
        $ export PID=$(docker inspect -f "{.State.Pid}}" ip-test)
        echo ${PID}
        $ ln -s /proc/${PID}/ns/net/ /var/run/netns/${PID}
        $ ip netns list
        $ brctl addbr bridge-test 
        $ brctl show 
        $ ifconfig bridge-test 192.168.9.200 netmask 255.255.255.0 up
        $ ip link add veth[Bridge] type veth peer name veth[Container_id]     
        $ brctl addif bridge-test veth[Bridge]        
        $ ifconfig veth[Bridge] up        
        $ ip link set vethContainer netns ${PID}      
        $ ip netns exec ${PID} ifconfig vethContainer 192.168.9.10 netmask 255.255.255.0      
        $ ip netns exec ${PID} /etc/init.d/networking restart     
        $ ifconfig -a

    方式二:Docker内嵌支持配置静态 IP

  • 创建自定义网络

  • docker network create -d bridge –subnet=172.18.0.0/16 –gateway=172.18.0.1 docker-br1
  • 注:docker-br1 为自定义网桥的名字
  • 查看所有docker网络

  • docker network ls
  • 为容器设置静态IP

  • docker run –name ip0 -it –net docker-br1 –ip 172.18.0.2 centos /bin/bash
  • 进入容器后,输入ifconfig查看IP
  • 查看容器IP

  • 方式一:docker inspect $(docker ps -q) | grep IPAddress
  • 方式二:docker inspect –format=“{{.Name}}: {{.NetworkSettings.IPAddress}}” $(docker ps -q)
  • See Also

    Thanks to the authors 🙂

    Pipework

  • Github首页
  • 通过 pipework 让 Docker 容器处于主机所在 LAN
  • 使用pipework将Docker容器配置到本地网络环境中
  • 使用pipework桥接docker
  • Docker网络详解及pipework源码解读与实践
  • Docker内置方式

  • Docker container networking
  • Docker静态IP设置
  • 为Docker容器指定自定义网段的固定IP/静态IP地址
  • –net=none 自定义网络方式

  • 为Docker容器分配静态IP
  • Docker中使用固定IP
  • docker容器分配静态IP
  •