六、Docker容器的网络连接

一、Docker容器的网络基础

       查看网络信息:ifconfig

       linux虚拟网桥(属于数据链路层):docker0

       Linux虚拟网桥的特点:可以设置IP地址,相当于拥有一个隐藏的虚拟网卡

       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容器的网络连接_第1张图片

       举例:

              安装bridge-utils

              sudo apt-get install bridge-utils

              查看网桥信息

              sudo brctl show

              运行容器

              docker run -it --name nwt1 ubuntu /bin/bash

              ifconfig

              sudo brctl show

              修改docker0地址

              sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0

              ifconfig

              sudo service docker restart

              运行容器

              docker run -it ubuntu /bin/bash

              ifconfig

自定义虚拟网桥

       添加虚拟网桥

              sudo brctl addbr br0

              sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0

       更改docker守护进程的启动配置

              /etc/default/docker中添加DOCKER_OPS值-b=br0

              举例:

                     sudo brctl addbr br0

                     sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0

                     ifconfig

                     sudo vim /etc/default/docker设置DOCKER_OPS=” -b=br0“

                     sudo service docker restart

                     ps -ef | grep docker

                     docker run -it ubuntu /bin/bash

                     ifconfig

二、Docker容器的互联

       允许所有容器互联

       拒绝容器间互联

       允许特定容器间的连接

环境准备

用于测试的Dokcer镜像Dockerfile

       FROM ubuntu:14.04

       RUN apt-get install -y ping

       RUN apt-get install update

       RUN apt-get install -y nginx

       RUN apt-get install -y curl

       EXPOSE 80

       CMD /bin/bash

 

允许所有容器互联

       --icc=true  默认

构建镜像

       docker build -t shuoyu/cct .

启动cct1容器,cct1中启动nginx

       docker run -it --name cct1 shuoyu/cct

       nginx

      Ctrl+P+Q

启动cct2容器,ifconfig查看ip

       docker run -it --name cct2 shuoyu/cct

       Ifconfig

       Ctrl+P+Q退出容器

进入容器cct1,cct1中ping命令cct2

       docker attach cct1

       ifconfig

       ping ip

 

       docker attach cct2

       curl http://ip

      

       docker stop cct1

       docker restart cct1

       docker attach cct1

       ifconfig

 

docker中启动了一些服务,如果使用ip地址去连接,docker重启后会失效

容器启动的参数

       --link

       docker run --link=[CONTAINER_NAME]:[ALIAS] [IMAGE] [COMMOND]

 

       docker run -it --name cct3 --link=cct1:webtest shuoyu/cct

       ping webtest

查看cct3的环境变量和host文件

       env

       vi /etc/hosts

 

       sudo service docker restart

       docker ps

       docker restart cct1 cct2 cct3

 

       docker attach cct3

       ping webtest

       vi /etc/hosts

       env

 

拒绝容器间互联

       Docker守护进程的启动选项

              --icc=false

       sudo vim /etc/default/docker

       配置参数:DOCKER_OPS=” --icc=false “

       sudo service docker restart

       ps -ef | grep docker

       docker restart cct1 cct2 cct3

       docker attach cct3

       ping webtest

容器间的连接被阻断

 

容许特定容器间的连接

       Docker守护进程的启动选项

              --icc=false --iptables=true

              --link

       说明:docker配置文件中配置--icc=false --iptables=true,此时紧紧容许容器启动--link配置的选项相互连接

       vim /etc/default/docker

       配置参数:DOCKER_OPS=” --icc=false --iptables=true“

              sudo service docker restart

              docker restart cct1 cct2 cct3

              docker attach cct1

              nginx

              Ctrl+P+Q

              docker attach cct3

              curl webtest

      

             docker run -it --name cct4 --link cct1:webtest shuoyu/cct

             curl webtest

      

              sudo iptables -L -n

             sudo iptables -F

             sudo iptables -L -n

             sudo service docker restart

             sudo iptables -L -n

             docker restart cct1 cct2 cct3 cct4

              docker attach cct1

              nginx

             Ctrl+P+Q

             docker attach cct4

              curl webtest

              Ctrl+P+Q

             docker attach cct3

              curl webtest

             Ctrl+P+Q

              docker attach cct1

              ifconfig

             Ctrl+P+Q

              docker attach cct2

              ping ip

              curl http://ip

      

              sudo iptables -L -n

 

三、Docker容器与外部网络的连接

主要内容

       --ip-forward

       iptables

       允许端口映射访问

       限制IP访问容器

 

--ip-forward:系统是否会转发流量

查看--ip-forward

sysctl net.ipv4.conf.all.forwarding

结果为1的话,可以转发流量,系统默认配置是1

       iptables:iptables是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含iptables功能。

       iptables链路图

六、Docker容器的网络连接_第2张图片

       表(table)

       链(chain)

       规则(rule)

              ACCEPT、REJECT、DROP

       filter表中包含的链(filter表中包含了允许和阻止的ip)

              INPUT

              FORWARD

              OUTPUT

查看filter表

       sudo iptables -t filter -L -n

默认打开的也是filter表

       sudo iptables -L -n

              启动容器

              docker run -it -p 80 --name cct5 shuoyu/cct

              nginx

              Ctrl+P+Q

              docker port cct5

              curl 127.0.0.1:port

              查看当前虚拟机ip地址,通过另一台虚拟机访问

              curl ip:port

测试阻止ip访问特定服务

       docker run -it -p 80 --name cct6 shuoyu/cct

       nginx

       Ctrl+P+Q

设置阻止规则

       sudo iptables -I DOCKER -s ip1 -d ip2 -p TCP --dport 80 -j DROP

说明:ip1访问源地址,ip2目的地址(docker容器地址)

       sudo iptables -L -n

你可能感兴趣的:(Docker的使用)