docker高级应用之赋予容器独立外网ip
最近特别的忙,负责的项目增加很多,差不多快4个月没有写博客,今天就给各位分享一下我docker方面经验。之前写过一篇docker的安装与使用(地址http://dl528888.blog.51cto.com/2382721/1427150),最近公司使用docker做持久化部署项目,主要使用docker的单机环境与集群环境,目前流程测试都没有问题,剩下仅有细节优化,现在我就给大家分享一下我的成功与经验。
本次介绍赋予docker container一个独立的外网ip,可以有自己独立的网络与其他服务器沟通。
需求:
需要一个独立ip xx.xx.xx.xx来与容器做映射,运行这个外网ip的80与443端口映射到容器的80与443端口,其实如果这个宿主机仅有这一个容器,或者仅有这个容器需要开通80与443对外,不需要独立的ip,但如果同一个宿主机有多个不同容器想把自己本身的80与443都对外把80与443对外,那么就得需要独立ip了。
本次环境:
系统:宿主机与容器为centos 6.5 x86_64 网络:em1是内网,em2是外网(设置本次外网ip是1.1.1.3),docker0是docker的桥接网卡 独立ip:设置本次独立ip是1.1.1.4 使用的技术:参考了openstack的iptables dnat技术 下面是docker版本 08:32:50 # docker version Client version: 1.1.2 Client API version: 1.13 Go version (client): go1.2.2 Git commit (client): d84a070/1.1.2 Server version: 1.1.2 Server API version: 1.13 Go version (server): go1.2.2 Git commit (server): d84a070/1.1.2 root@ip-10-10-29-224:~ 09:58:51 # docker info Containers: 15 Images: 8 Storage Driver: devicemapperPool Name: docker-8:3-22806948-poolData file: /var/lib/docker/devicemapper/devicemapper/dataMetadata file: /var/lib/docker/devicemapper/devicemapper/metadataData Space Used: 60996.6 MbData Space Total: 102400.0 MbMetadata Space Used: 33.9 MbMetadata Space Total: 2048.0 Mb Execution Driver: native-0.2 Kernel Version: 2.6.32-431.29.2.el6.x86_64
操作方法:
1、为独立ip与外网卡em2做网卡别名
ifconfig em2:0 1.1.1.4 netmask 255.255.255.0 up
2、启动新容器
docker run --restart always --privileged -d --name='test' docker.ops-chukong.com:5000/centos6-http:new /usr/bin/supervisord
我这里使用supervisor启动容器的ssh与http服务,并且设置允许特权模式,在docker重启后自动启动容器。另外我没有设置开放的端口,原因是我自己使用iptables的dnat,没有使用默认docker的nat规则(设置了--iptables=false),使用自定义的好处是我可以随意指定开放端口,如果使用默认的,只能在容器生成的时候-p指定端口才能对外开放。
获取容器ip
docker inspect test|grep -i add
比如本次获取的ip是172.17.0.5
3、在宿主机的iptables里做dnat映射
默认的input、output、forward我不做设置,仅设置nat
*nat :PREROUTING ACCEPT [15:1542] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -j MASQUERADE -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:80 -A DOCKER -d 1.1.1.4 ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:443 COMMIT
其中-A DOCKER是做的dnat设置,-d是指定访问的外网ip地址,就是我刚才1.1.1.4,另外dport是允许访问的端口,--to-destination是容器的ip与内部端口
然后重启iptables就解决了此问题。
有问题留言,我会及时的给与答复。
docker高级应用之赋予容器独立外网ip相关推荐
- 用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...
- [转]用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...
- 禁止Docker容器访问外网
禁止Docker容器访问外网--用于实现类似于虚拟机的Host-only模式 假设docker的虚拟网卡docker0的网段是192.168.123.0/24,通过iptables向DOCKER-US ...
- VMware创建Linux及局域网内独立访问IP和访问外网IP的配置
好早之前有一篇是配置远程连接Linux和部署Tomcat的文章,但是并没有讲解如何配置IP的相关知识.最近公司在搞集群配置,我就先拿电脑上的VMware上的Linux做个测试,分享和总结一下经验吧,也 ...
- nginx反向代理下thinkphp、php获取不到正确的外网ip
nginx反向代理下thinkphp.php获取不到正确的外网ip 在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ ...
- vmware 多外网ip
场景: A,B为物理服务器,都绑定了独立的外网ip.C为vm虚拟机,安装在A机器上.三台设备都在同一个局域网,网关为192.168.5.1. 目标:虚拟机能够和101,102局域网的机器互通,同时通过 ...
- 记一次MySQL使用外网IP连接超时
背景:刚买的一台阿里云ecs服务器,专用网络,centos 7操作系统. 假设外网IP地址为10.365.25.2(纯属瞎编,如有巧合,纯属意外),内网IP:19.16.25.36(纯属瞎编,如有巧合 ...
- 为什么我可以正常上网,却ping不通自己的外网IP呢???
https://zhidao.baidu.com/question/455923156647224925.html [重点] 一般运营商是禁止个人用户ping,为了安全,你可以访问别人的网站,但是别人 ...
- 什么是内网和外网?什么是内网IP和外网IP?本地连接和宽带连接又有什么区别?
今天,有很多小伙伴被何为内网外网迷糊?究竟什么是内网?什么是外网?他们又有和区别?还有什么是内网IP和外网IP?本地连接和宽带连接有什么区别?怂怂今天就来给大家科普一下吧: 问题一.何为内外网及定义诠 ...
最新文章
- CCS编译添加链接库文件与头文件的方法
- 如何将nodejs项目程序部署到阿里云服务器上
- VMWare 全屏后最小化死机
- 计算机系统安装要点,电脑重新装系统要注意哪些要点 重装系统时的六大事项...
- 假期七天实习参观有感
- 频域卷积定理的证明 乘积的傅里叶变换等于分别做傅里叶变换的卷积乘1/2pi
- mysql查看mylog命令_mysql 日志查询(查看mysql日志命令)
- matlab plc控制系统设计,基于MATLAB的PLC温度监控系统设计
- 计算机重装后如何连接无线网络,电脑重装系统后怎么连接无线网络连接
- 结对开发——求二维环形数组所有子矩阵最大和的问题
- 2023年1月21日除夕活动取消通知
- tf-faster-rcnn训练报错: Loaded runtime CuDNN library: 7.0.5 but source was compiled with: 7.1.4.r-rcn
- c#中将一个实体类复制到另一个实体类
- 为什么不要使用 select * from xxx (oracle 亲测)
- c语言简单小游戏(模拟魔塔)
- 大学生个人网页模板 简单网页制作作业成品 极简风格个人介绍HTML(个人博客 4页)
- CV2 图像归一化函数
- Linux的系统管理命令和压缩命令和编辑器
- 百度云存储空间使用问题
- JIRA REST API(一)
热门文章
- 网站架构探索(2)-CDN基本常识 王泽宾
- 跨平台开发Flutter初体验
- 兼容性—IE6/7下带有overflow:hidden属性的父级元素包不住带有position:relative属性的子元素...
- Lucene+Tika 文件索引的创建与搜索
- 区块链是一种用一种不可变的形式存储数字信息
- React多页面应用脚手架-v1.3.0
- ICO流程,casestudy
- 【Linux】在虚拟机上安装CentOS7
- http://www.cnblogs.com/dolphin0520/p/3949310.html
- 基于CentOS中PXE网络环境构建实例