zoukankan      html  css  js  c++  java
  • docker容器配置独立ip

      一般安装docker后都会通过端口转发的方式使用网络,比如 “-p 2294:22” 就将2294抓发到22端口来提供sftp服务,这样使用起来没有问题。但端口号很难记忆,如果前边有nginx等抓发工具,可以将2294再转回22,但有没有方法直接给docker容器配置独立ip地址呢?

    一、以下两种方式都需要安装 pipework

      其作用是指定物理网段容器IP地址

    cd /usr/src
    # 若没有wget命令,安装 yum install -y wget
    wget -O pipework-master.zip https://codeload.github.com/jpetazzo/pipework/zip/master
    # 若没有unzip命令,安装 yum install -y unzip zip
    unzip pipework-master.zip 
    cp -p pipework-master/pipework /usr/local/bin/
    

      以下两个种方式重启后ip地址都会丢失,所以每次重启后都要重新分配ip地址

    二、通过虚拟网卡br0桥接

     1、修改宿主机物理网卡配置

    vi /etc/sysconfig/network-scripts/ifcfg-em1
    

      修改两个配置

    BOOTPROTO=none # 配置不启动dhcp
    BRIDGE=br0 # 配置网桥
    

      

    2、增加网桥设备 br0

    vi /etc/sysconfig/network-scripts/ifcfg-br0
    

      在其中增加如下内容

    DEVICE=br0
    ONBOOT=yes
    TYPE=Bridge
    BOOTPROTO=dhcp
    

      配置完成后重新启动网络,此时 br0 设备就使用的物理网卡 em1 作为桥接通信。

     3、创建容器(创建了一个centos7的容器)

    docker run -itd --net=none --name=test01 ansible/centos7-ansible /bin/bash # 其中 --net=none不设置网络

    4、给创建的容器制定物理IP地址

    pipework br0 test01 192.168.2.235/24@192.168.2.1
    #       网桥 容器名     IP地址         网关地址
    

    5、进入容器查看ip地址

    docker exec -it test01  /bin/bash # 进入test01容器
    yum install -y net-tools # 安装ifconfig
    ifconfig
    

      此时就应该看到配置的  192.168.2.235 这个ip。

      此种方法的问题是,之后每个容器都需要指定一个ip地址。

    三、通过物理网卡桥接

    3.1 绑定物理ip 

    1、创建容器(创建了一个centos7的容器)

    docker run -itd --net=none --name=test02 ansible/centos7-ansible /bin/bash # 其中 --net=none不设置网络

    2、给创建的容器制定物理IP地址,其中eth0跟据实际情况修改

    pipework eth0 test02 192.168.2.234/24@192.168.2.1
    #       网桥 容器名     IP地址         网关地址
    

    3、进入容器查看ip地址

    docker exec -it test02  /bin/bash # 进入test01容器
    yum install -y net-tools # 安装ifconfig
    ifconfig
    

      此时就应该看到配置的  192.168.2.234 这个ip。

      此种方法的问题是,之后每个容器都需要指定一个ip地址。

    3.2 使用内网地址172.x.x.x

    1、创建容器(创建了一个centos7的容器)

    docker run -itd --name=test03 ansible/centos7-ansible /bin/bash
    

    2、进入容器查看ip地址

    docker exec -it test03  /bin/bash # 进入test01容器
    yum install -y net-tools # 安装ifconfig
    ifconfig
    

    四、重启后固定ip

      以上防范重启后需要使用shell脚本的方式重新分配ip地址,也可使用 docker-static-ip 固定ip

    实现与pipework一样,只是用Python把整个指定的IP的操作变成后台进程,把 [容器,网桥,IP地址,网关]写进containers.cfg 。
    程序会根据配置文件来自动设置容器的IP地址,每10秒检查一次,如果有新增的就会自动设置。
    当重启容器时,IP地址消失,程序会根据配置文件再次自动分配。

      使用说明代码下载地址参见 https://github.com/lioncui/docker-static-ip

      

    参考文档:

      http://blog.51cto.com/12832314/1929936?utm_source=oschina-app

      https://blog.csdn.net/xitongfengxi/article/details/52249988

      https://blog.csdn.net/fgf00/article/details/52575500

      http://www.jb51.net/article/118396.htm

      https://www.cnblogs.com/xuezhigu/p/8257129.html

  • 相关阅读:
    Oracle创建上下文 SYS_CONTEXT
    闪回版本查询
    物化视图创建案例
    Oracle 多租户环境学习路线图
    【Mysql MHA】CentOS7.6+Mysql8.0.16 入坑
    【翻译】--19C Oracle 安装指导
    Docker(3)---常用命令
    Docker(2)---安装(设置镜像加速器)
    Docker(1)---基础概念
    AMQP高级消息队列协议
  • 原文地址:https://www.cnblogs.com/rslai/p/8990929.html
Copyright © 2011-2022 走看看