查看网络信息: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个地址
举例:
安装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
允许所有容器互联
拒绝容器间互联
允许特定容器间的连接
环境准备
用于测试的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
主要内容
--ip-forward
iptables
允许端口映射访问
限制IP访问容器
--ip-forward:系统是否会转发流量
查看--ip-forward
sysctl net.ipv4.conf.all.forwarding
结果为1的话,可以转发流量,系统默认配置是1
iptables:iptables是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含iptables功能。
iptables链路图
表(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