使Docker提供对外服务的网络配置(桥接与端口)
来源:互联网 发布:知识百科软件 编辑:程序博客网 时间:2024/05/17 05:14
前沿:
docker 启动容器后,如何对外服务? 希望大家看了这篇文章后有些帮助。
docker的有关网络问题没怎么搞清楚,请教了下邓磊同学,感谢 !
Docker生成的容器,一般会给你生成一个ip地址,这个ip地址是和docker0的地址是一个ip段的。
通过ip a命令 ,咱们可以看到docker0的ip和子网的范围 。 大家会发现除了docker0 还有一个vethc 数字的网卡,这个也算是虚拟网卡绑在桥接上的。
我们创建一个容器,并且暴露22端口。 这个22端口的意思是对外暴露了22端口,系统会从49000-49900端口范围内给你分配一个端口。
docker run 指明端口有两种的方式,一种是-P ,他是识别容器里的dockerfile声明的端口关系。 还有一个是-p 这个是小屁屁,他就可以直白点了。 比如 -p 6379,是对外暴露了6379。 6379:6379 是外面是6379,里面也是6379 。
原文: http://rfyiamcool.blog.51cto.com/1030776/1540074
root@dev-ops:~# docker run -d -p 22 --name="redis_test" rastasheep/ubuntu-sshd
ed7887b93aa452323ee96339d889bebc36ad25a479c660ba89e97d2c5869f105
root@dev-ops:~#
root@dev-ops:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed7887b93aa4 rastasheep/ubuntu-sshd:latest /usr/sbin/sshd -D 7 seconds ago Up 7 seconds 0.0.0.0:49153->22/tcp redis_test
root@dev-ops:~#
原文: http://rfyiamcool.blog.51cto.com/1030776/1540074
原来我以为docker是写了一个socker做了端口的映射功能,看文档才知道,他就是调用了一个 iptable的端口映射。
iptables -t nat -L
原文:http://rfyiamcool.blog.51cto.com/1030776/1540074Chain PREROUTING (policy ACCEPT)target prot opt source destination DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCALChain INPUT (policy ACCEPT)target prot opt source destination Chain OUTPUT (policy ACCEPT)target prot opt source destination DOCKER all -- anywhere !127.0.0.0/8 ADDRTYPE match dst-type LOCALChain POSTROUTING (policy ACCEPT)target prot opt source destination MASQUERADE all -- localhost/16 !localhost/16 Chain DOCKER (2 references)target prot opt source destination DNAT tcp -- anywhere anywhere tcp dpt:49153 to:172.17.0.2:22root@dev-ops:~#
有主机的ip,和容器的ip,那你还怕啥 ! 想映射什么,自己映射。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
docker之间的容器默认是互通的,也就是两个容器可以互相的通信。 如果想控制容器之间的通信,可以利用 docker 的 --icc 属性控制。
原文: http://rfyiamcool.blog.51cto.com/1030776/1540074
好了,我们在说下桥接的方式。 如果你觉得麻烦,每次都需要做端口的映射,或者是修改映射,那你可以考虑下用桥接网卡的模式。 貌似一些论坛上的牛人不太推荐用桥接,估计是为了安全的问题。 毕竟nat的话,对外是安全的,对外的服务也只是暴露出端口而已。 而桥接的话,会暴露ip出去。
原文: http://rfyiamcool.blog.51cto.com/1030776/1540074
暂停docker服务
sudo service docker stop
用ip命令使docker0网卡down掉
sudo ip link set dev docker0 down
删除网卡
sudo brctl delbr docker0
创建一个网卡 名字是bridge0
sudo brctl addbr bridge0
ip地址和子网
ip addr add 192.168.5.1/24 dev bridge0
启动桥接网卡
sudo ip link set dev bridge0 up
写入配置
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
sudo service docker start
这样的桥接方式有个问题就是,他的ip是docker自己检测搞给你的,貌似不是dhcp获取空闲的,然后赋予给容器的。我昨天再次做测试的时候,有一个ip被占用的,但是他还是分喷给了一个被占用的ip地址。 这样的话就冲突了。 如果ip端和公司内部或者是线上重叠的话,可能会造成ip地址的冲突。 桥接后遇到ip地址冲突是个人结论 ,也可能是我这边环境导致的这类问题!
本文出自 “峰云,就她了。” 博客,谢绝转载!
- 使Docker提供对外服务的网络配置(桥接与端口)
- 使Docker提供对外服务的网络配置(桥接与端口)
- 使Docker提供对外服务的网络配置(桥接与端口)
- docker 平台采用openvpn对外提供服务的部署方法
- 使用NAT模式对外提供WEB服务的网关的网络过程
- 配置VirtualBox虚拟机通过NAT方式对外提供Web服务
- springboot下dubbo2.8.4服务的提供与消费(A模块调用B模块提供的服务并对外提供新的服务)
- 电信单方面关闭ADSL用户入口80端口,导致用户有关80端口对外服务无法实现,严重违反提供公网IP的合同
- LINUX开启允许对外访问的网络端口
- LINUX开启允许对外访问的网络端口命令
- LINUX开启允许对外访问的网络端口命令
- docker 中配置mongodb并对外暴露链接端口设置账户认证,防止脱裤
- 如何让虚拟机对外提供服务
- Spring整合Dubbo对外提供服务
- java对外提供服务接口如何写?
- docker 配置桥接网络
- Docker配置桥接网络
- 容器内执行hsf服务(仅限当前容器对外提供的服务)
- 译:Android 网络通信框架Volley简介(Google IO 2013)
- Android视图状态及重绘流程分析(三)
- 欢迎使用CSDN-markdown编辑器
- 第一天
- VirtualBox虚拟机三种上网方式的实践
- 使Docker提供对外服务的网络配置(桥接与端口)
- PL/SQL下载安装
- 《java8函数式编程》——使用函数式编程重构代码
- 2015.10.30 我胡汉三又回来了。
- uploadify+jcrop实现头像上传裁剪功能
- 一份标准的HTML文档必须有的HTML标签
- 第十一课 for循环(3)---循环变量的变化
- 调试 vs2010 assert()断言对话框的使用
- 栈的应用之表达式求值(算符优先法)