设为首页 收藏本站
查看: 1359|回复: 0

[经验分享] Docker网络功能

[复制链接]

尚未签到

发表于 2018-5-30 07:13:35 | 显示全部楼层 |阅读模式
Docker网络功能
容器间的访问
首先安装bridge-utils
  #sudo apt-get install bridge-utils
DSC0000.jpg

  新添加一个桥接网卡br0
  #sudo brctl addbr br0
DSC0001.jpg

  修改配置文件加入DOCKER_OPTS="-b=br0" ,使用该桥接网卡启动docker
  #sudo vim /etc/default/docker
  重启docker
  #sudo restart docker
  启动一个容器发现ip地址已经使用我们自定义的br0,ip地址为192.168.100.2
DSC0002.jpg

容器互联
  使用 --link 参数可以容器之安全的行交互
  我们再次创建一个容器httpd2 使用--link选项,并测试两个容器的连通性
  --link 参数的格式--link name:alias ,其中 name 是要接的容器的名称, alias 接的名。
DSC0003.jpg

  关闭并重新启动httpd1并查看其地址,发现地址已经改变
DSC0004.jpg

  我们再用httpd2 测试httpd1的连接,发现地址已自动修正
DSC0005.jpg

  我们查看一下他的host记录。发现httpd1的ip地址已自动更新
DSC0006.jpg

拒绝容器之间的互联
  --icc=false
  编辑/etc/default/docker ,增加--icc=false,并重启docker
DSC0007.jpg

  启动容器
DSC0008.jpg

  连接到httpd2再次测试httpd1,发现网络已经不通
DSC0009.jpg

容许特定的连接
  编辑/etc/default/docker ,增加--iptables=true,并重启docker、
DSC00010.jpg

  进入容器httpd1启动httpd服务
DSC00011.jpg

  使用httpd2测试httpd1的web服务,是否发现web可以访问呢?
DSC00012.jpg

  我们来查看一下本地的iptables,发现httpd1的web端口是对httpd2开放的,所以我们可以访问却ping不通
DSC00013.jpg

  我们再次启动一个httpd3拒绝他访问httpd1的web
DSC00014.jpg

  是不是发现httpd3无法访问httpd1的web服务呢。有关ubuntu的iptables下节我将介绍一下
DSC00015.jpg

DSC00016.jpg

外部访问容器
  容器中可以行一些网络应用,要外部也可以访问这用,可以通-P -p 参数来指定端口映射。
  当使用 -P 标记时Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网端口。
  
  #sudo docker -it -p 80 --name httpd4 192.168.7.130:5000/httpd
   DSC00017.jpg
  使用docker port 加容器名查看映射端口
  也可以自己定义指定端口来映射,如图,我们用8080端口来映射容器的web服务
  #sudodocker run -it -p 8080:80 --name httpd5 192.168.7.130:5000/httpd
   DSC00018.jpg
  本地访问测试
   DSC00019.jpg
附 /etc/default/docker 参数
  其中有些命令选项只有在 Docker 务启动候才能配置,而且不能上生效。
  -b BRIDGE or --bridge=BRIDGE --指定容器挂的网
  --bip=CIDR --定制 docker0的掩
  -H SOCKET... or --host=SOCKET... --Docker 端接收命令的通道
  --icc=true|false --是否支持容器之间进行通信
  --ip-forward=true|false --看下文容器之的通信
  --iptables=true|false --禁止 Docker 添加 iptables 规则
  --mtu=BYTES --容器网中的 MTU
  下面2个命令选项既可以在启动务时指定,也可以 Docker 容器启动docker run 候指定。在
  Docker 务启动候指定会成认值,后面docker run 可以覆盖置的默认值
  --dns=IP_ADDRESS... --使用指定的DNS
  --dns-search=DOMAIN... --指定DNS搜索域
  最后选项只有在 docker run 使用,因它是针对容器的特性内容。
  -h HOSTNAME or --hostname=HOSTNAME --配置容器主机名
  --link=CONTAINER_NAME:ALIAS --添加到一个容器的
  --net=bridge|none|container:NAME_or_ID|host--配置容器的接模式
  -p SPEC or --publish=SPEC --映射容器端口到宿主主机
  -P or --publish-all=true|false --映射容器所有端口到宿主主机
容器访问控制
  容器要想访问外部网,需要本地系转发支持。在Linux 中,检查转发是否打开。
  $sysctl net.ipv4.ip_forward
  net.ipv4.ip_forward = 1
  如果0明没有开启转发需要手打开。
  $sysctl -w net.ipv4.ip_forward=1
  如果在启动 Docker --ip-forward=true ,Docker 就会自动设定系ip_forward参数1
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482777-1-1.html 上篇帖子: 使用Docker构建CentOS 7 + Tomcat 7 + Oracle JDK 7的WEB服务器 下篇帖子: Docker常见命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表