一般安装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

docker容器配置独立ip的更多相关文章

  1. 为docker容器设置独立ip

    docker 1.12使用新版macvlan设置与宿主机同网段ip ****************************************** 由于开发的一些特殊需求,需要将容器部署在与宿主 ...

  2. 为Docker容器配置固定IP

    当docker以桥接的方式启动容器时,容器内部的IP是经过DHCP获取的,例如:172.17.0.8/32,且每重启依次IP都会发生变动.某些特殊的情况下,需要容器内有自己固定的一个内部IP.我的实现 ...

  3. Docker Container 配置独立IP

    1.宿主机安装网桥工具包 要是Linux可以工作在网桥模式,必须安装网桥工具bridge-utils,运行命令: yum install bridge-utils

  4. 使用pipework将Docker容器配置到本地网络环境中

    使用pipework将Docker容器配置到本地网络环境中 需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主 ...

  5. Docker容器配置远程登录

    Docker容器配置远程登录 前言 docker 的网络模式主要有三种,bridge.host.none: pridge是docker安装后自动创建的虚拟网卡,创建容器时默认使用此模式. host是指 ...

  6. (为容器分配独立IP方法二)通过虚拟IP实现docker宿主机增加对外IP接口

    虚拟IP.何为虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配 ...

  7. docker容器分配静态IP

    最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块.默认情况下启动容器的时候,docker容器使用的是bridge策略比如: docker run -ti ubuntu:latest ...

  8. PhpStorm连接Docker容器配置xdebug断点调试

    本教程主要演示xdebug在PhpStorm中配置方法. 一.环境说明 1.Mac笔记本(本教程演示过程使用的是Mac OS操作系统,和windows环境是有区别的,这一点需要特别注意): 2.在Ma ...

  9. 为Docker容器设置静态IP

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 创建docker容器 docker run -it --name=yh -h yh --net=none de ...

随机推荐

  1. WEB入门.六 盒子模型

    学习内容 CSS盒子模型 盒子之间的关系 页面元素定位 能力目标 理解盒子模型 理解内容与表现分离的优点 理解并掌握盒子之间的关系 理解并掌握绝对定位与相对定位的用法 本章简介 上一章节中已经讲解了页 ...

  2. 前端学习 -- Css

    Css:Cascading Style Sheets CSS叫做层叠样式表,用来设置页面中元素的样式.背景颜色.字体颜色.字体大小... 编写位置: 1,内联样式: 将样式编写到标签的style属性中 ...

  3. 解题:POI 2009 Fire Extinguishers

    题面 洛谷数据非常水,建议去bzoj 我第一眼一看这不是那个POI2011的升级版吗(明明这个是2009年的,应该说那个是这个的弱化版,果然思想差不多. 因为$k$很小,可以考虑每个间隔距离来转移.我 ...

  4. 【loj2586】【APIO2018】选圆圈

    题目 有 \(n\) 个圆$c_1,c_2, \cdots , c_n $,执行如下的操作: 找到剩下的半径最大的圆删除并删除所有和它有交的其他并没有被删除的圆: 求每个圆是被那个圆删除的: $1 \ ...

  5. 关于[x/y]一些小想法

    [x/y],即x除以y下取整 (不会LATEX) 1.对于给定的x,对于所有的1<=y<=x, [x/y]一共有√x种取值. 证明: 对于y<=√x,y有根号种,所以值最多根号种.对 ...

  6. 【cf859E】Desk Disorder

    Portal --> cf859E Solution ​​ 我们可以将每一个人看成一条边,将位置看成点,然后一个人在新的方案中可以选择的位置就是这条边连接的两个点,然后我们就得到了一个图 ​ 注 ...

  7. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  8. np.argsort函数

    np.argsort函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me numpy.argsort(a, axis=-1, kind='quicksort', order=None) 功能: ...

  9. bzoj千题计划149:bzoj2527: [Poi2011]Meteors

    http://www.lydsy.com/JudgeOnline/problem.php?id=2527 整体二分 区间加,单点查,树状数组维护差分序列 注意 累积可能会爆long long,所以一满 ...

  10. 2017 清北济南考前刷题Day 4 morning

    考场思路: 倒着算就是 可以对一个数-1 可以合并两个数 可以证明只有0和0才能执行合并操作 然后模拟 #include<cstdio> #include<iostream> ...