Docker网络基础-yellowcong
来源:互联网 发布:mac如何解密外置硬盘 编辑:程序博客网 时间:2024/05/22 13:47
Docker容器启动后,会创建网络连接的两端,一端是在容器内创建eth0网卡,容器外创建vethxxx接口,并通过docker0网桥,进行外部网络连接,Docker容器互联,特定允许特定容器连接,容器与外部让网络连接
docker0的ip地址172.17.42.1 子网掩码255.255.0.0
mac地址的范围02:42:ac:11:00:00到02:42:ac:11:ff:ff
一共65534个地址
Docker创建是为容器提供MAC地址,启动时创建容器连接的两端,一个是容器内的网络设备eth0,另一个是docker0与外部网络的通信veth*,vethxxx是主机与container内部eth0相连的管道
自定义网桥操作
网桥管理工具
yum install bridge-utilsbrctl show #查看网桥brctl addbr br0#查看docker环境信息ps -ef|grep docker
修改网桥地址
ifconfig docker0 192.168.200.1 netmask 255.255.255.0
网桥配置注意
1、网桥配置不生效
配置自定义网桥后,我们在/etc/default/docker
配置网桥后,并不会生效,请参考 Docker之修改/etc/default/docker 里的DOCKER_OPTS参数不生效问题-yellowcong,这篇文章具体介绍了如何自定义网桥。
2、网桥设置后,重启服务器,docker启动失败
网桥配置完成后,当我们重启服务器,就会导致docker启动不了,是由于我们配置的网桥没有保存,具体请查看 Docker之网桥保存-yellowcong
Docker容器互联
默认情况下,docker的容器间是可以相互访问的
容器间访问–link
docker的容器重启后,ip地址就会发生变化,这样容器的访问,不能基于ip地址,所以需要使用 –link参数来基于容器名来访问容器,解决了ip地址变化,导致容器访问不了的问题,docker每次启动的时候都会动态更改evn和hosts,这样就维护了ip地址变化问题
案例
这下面有三个容器,我们再添加一个容器,然后使用别名来访问test1容器
#启动容器nginx,连接到test1服务器,并命名别名test,我们就可以直接通过别名的方式来访问网站了,容器就算是重启,也是可以访问的docker run -it --link=test1:test1 --name test3 nginx#开启80端口docker run -it --link=test1:test1 --name test3 -p 80 nginx#容器的hosts配置cat /etc/hosts#查看环境变量evn#注销掉了所有容器service docker restart#启动容器docker start test1 test2 test3
直接通过别名,就可以访问到服务
查看test3的hosts,发现了别名的映射
阻止容器间访问–icc=false
配置了–icc= false属性后,容器之间,就不能随意访问了,需要暴漏端口,才可以进行访问
#web服务器docker run -it -p 80 --name=test1 nginx /bin/bash#进入容器后,启动nginx nginx#建立连接的容器docker run -it --name=test2 --link=test1:web nginx /bin/bash#我们可以直接通过别名访问相互关联的容器curl web#查看端口映射情况docker port test1#80/tcp -> 0.0.0.0:32768
ip端口的映射
我们可以在运行的时候,指定端口的映射,也可以只暴漏端口,让docker做映射操作
#运行一个简单的应用程序,那么容器里运行在3000端口的服务在宿主机的8080端口也就可用了#简单来讲,将容器的3000端口映射到宿主机的8080端口docker run -p 8080:3000 my-image#直接-p,不直接指定宿主机端口,docker自动分配端口,解决的端口冲突docker run -it -p 80 --name test
允许特定容器连接
–icc=false #不允许容器之间访问
–iptables=true #允许docker将配置添加到iptables中
–link #允许link的容器访问
docker的访问主要依赖于iptables的操作
#查看端口的映射docker port 容器名 iptables -L -n #查看防火墙的设置
Docker容器与外部让网络连接
–ip_forward=true
docker默认设定是true ,可以进行系统转发,可以自己在docker中配置DOCKER_OPTS这个字段
#查看系统是否开启了流量转发,设定为1 就是开启了sysctl net.ipv4.conf.all.forwarding
Iptables
iptables
允许端口映射访问
限制ip访问
input forword output链
三种操作,一种是外部传递进来的数据,第二种,是本机发出的,第三种,是转发的。
#表示允许外界访问test1的容器#source 如果是0.0.0.0/0 就表示不限制ip#destination 表示服务器的ip,目的ipDOCKER#链表target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 192.168.110.2 tcp dpt:80#DROP表示禁止192.168.110.4访问192.168.110.2 ipiptables -I DOCKER -S 192.168.110.4 -D 192.168.110.2 -p TCP -dport 80 -J DROP
- Docker网络基础-yellowcong
- Docker之Weave网络问题-yellowcong
- Docker之Flannel管理网络-yellowcong
- Docker之Flanned容器网络不通-yellowcong
- docker:网络基础配置
- Docker 网络基础介绍
- Docker 网络基础介绍
- docker网络配置基础
- Docker 网络基础
- 【docker】docker容器的网络基础
- docker run命令详解-yellowcong
- Docker之容器退出-yellowcong
- docker之ifconfig安装-yellowcong
- Docker网络基础:快速指南
- Docker实战:网络基础配置
- Docker学习七:网络基础
- Docker之网桥保存-yellowcong
- Docker之跨主机容器连接-yellowcong
- 常见的垃圾收集器
- HDU 1806 Frequent values(线段树+离散化+二分)
- vector用法
- hibernate整合spring异常处理
- AudioService
- Docker网络基础-yellowcong
- 集合框架——定义泛型接口
- mysql索引实例----第二章实战篇
- Android APK安装过程
- 回文串类型题目集锦
- 【iOS】TestFlight 发布包测试
- 关于fork一些有意思的问题
- 【其他】神舟精盾K470-i3 D3更换支持5GHz的双频无线网卡
- c#中选择排序和冒泡排序比较