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
docker容器配置独立ip的更多相关文章
- 为docker容器设置独立ip
docker 1.12使用新版macvlan设置与宿主机同网段ip ****************************************** 由于开发的一些特殊需求,需要将容器部署在与宿主 ...
- 为Docker容器配置固定IP
当docker以桥接的方式启动容器时,容器内部的IP是经过DHCP获取的,例如:172.17.0.8/32,且每重启依次IP都会发生变动.某些特殊的情况下,需要容器内有自己固定的一个内部IP.我的实现 ...
- Docker Container 配置独立IP
1.宿主机安装网桥工具包 要是Linux可以工作在网桥模式,必须安装网桥工具bridge-utils,运行命令: yum install bridge-utils
- 使用pipework将Docker容器配置到本地网络环境中
使用pipework将Docker容器配置到本地网络环境中 需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主 ...
- Docker容器配置远程登录
Docker容器配置远程登录 前言 docker 的网络模式主要有三种,bridge.host.none: pridge是docker安装后自动创建的虚拟网卡,创建容器时默认使用此模式. host是指 ...
- (为容器分配独立IP方法二)通过虚拟IP实现docker宿主机增加对外IP接口
虚拟IP.何为虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配 ...
- docker容器分配静态IP
最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块.默认情况下启动容器的时候,docker容器使用的是bridge策略比如: docker run -ti ubuntu:latest ...
- PhpStorm连接Docker容器配置xdebug断点调试
本教程主要演示xdebug在PhpStorm中配置方法. 一.环境说明 1.Mac笔记本(本教程演示过程使用的是Mac OS操作系统,和windows环境是有区别的,这一点需要特别注意): 2.在Ma ...
- 为Docker容器设置静态IP
此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 创建docker容器 docker run -it --name=yh -h yh --net=none de ...
随机推荐
- JS的强制类型转换
将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况,隐式的情况称为强制类型转换. JavaScript中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值,不会返回对象和函数. ...
- 解题: SDOI 2011 染色
题面 强行把序列问题通过树剖套在树上...算了算是回顾了一下树剖的思想=.= 每次树上跳的时候注意跳的同时维护当前拼出来的左右两条链的靠上的端点,然后拼起来的时候讨论一下拼接点,最后一下左右两边的端点 ...
- python之旅:并发编程之多进程
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...
- navicat执行大容量的.sql文件时的设置
如果有主外键关联等,执行报错,则去掉中间的对勾保留第三个对勾试试.第三个对勾 是 手动提交(不自动提交,估计是全部导入到数据库中之后再一起提交,而不是导入一条sql语句就提交一次) 如果同时不勾选第2 ...
- Tomcat权威指南-读书摘要系列2
2. 配置Tomcat 2.1. 重定向Web应用程序的目录 将工程文件与Tomcat分离 复制conf和webapps文件夹到分离目录: 配置CATALINA_BASE环境变量,值为分离目录: 2. ...
- jquery.lazyload插件实现图片延迟加载详解
什么是LazyLoad技术? 在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互.尤其是对于高清晰的图片,占了几百K的空间.Lazy Load 是一个用 JavaScript 编写的 ...
- 2. Jmeter压力测试简单教程(包括服务器状态监控) (转)
转自:https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 前段时间公司需要对服务器进行压力测试,包括登录前的页面和登录后的页面,主要 ...
- Spring MVC原理介绍
1.Spring Web MVC是什么 spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解 ...
- expect嵌套shell循环
#!/bin/bash Detailtxt="test.txt" while read line do dest=`echo $line|awk '{print $1}'` ip= ...
- Maven项目中通过profile定义使不同环境使用不同配置信息
profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果.比如 ...