docker0是liunx的虚拟网桥 网桥是,应用层,表示层,回话层,传输层,网络层,数据链路层网桥()物理层
liunx虚拟网桥的特点:
可以设置ip地址
相当于拥有一个隐藏的虚拟网卡
ubuntu没有查看网桥管理工具需要先安装,apt-get install bridge-utils
之后可以运行brctl show查看网桥设备
当docker默认的网段不符合我们的条件时,我们可以设置通过liunx自带的
ifconfig docker0 192.168.200.1 netmask 255.255.255.0
默认情况下,docker并没有限制容器间的访问,同一台数组机可以访问 容器的IP地址不可靠,会随着启动而改变
可以用--link=cct1:webtest 表示连接到cct1这台容器上,并且取一个别名webtest,下次就可以用这个webtest了,会自动修改映射
让特定的容器进行连接
第一:DOCKER_OPTS="--icc = false"
--iptable=true
--link
iptables -f :把iptables清空
-iptables是liunx维护的一个工具可以用iptables -l -n查看详情
如何拒绝容器间的访问
把docker启动进程启动项选为false
--icc=false
docker容器与外部网络连接
ip_forward:ip_forward=true(true) 是否允许流量转发
iptables:iptables:是liunx内核集成的包过滤的防火墙系统,几乎所有的liunx都会该功能
用iptables -t filter -L -n查看filter表
特定的访问不能访问 docker依赖了iptables进行各种网络设置
iptabes -I DOCKER -s 10.211.55.3 -d 172.17.0.7 -p TCP --dport 80 j DROP
Docker的数据管理:::很重要
数据卷:一般docker 的运行周期与里面运行的程序是一致的
数据卷是进过特殊设计的目录,可以绕过联合文件系统UFS(,)
为一个或者多个容器提供访问
数据卷让数据永久化,完全独立于容器的生命周期,当容器删除也不会有问题
数据卷的特点:
数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了了数据会拷贝到数据卷
数据卷可以在容器间共享重用
数据卷可以在容器之间共享和重用
可以对数据卷进行修改,数据卷变化不会影响镜像更新
卷一直存在,即使挂载数据卷的容器已经删除了
可以使用docker run -v 本机目录: 容器中的目录做映射 如果本地没有会自动创建该目录
可以使用docker run -v 本机目录: 容器中的目录:RO做映射 权限限制在目录后面追加ro表示只读
当然了也可以在dockerfile中用VOLUME["/data"] 设置,但是这是随机分配本机地址,很难数据共享
docker数据卷容器解决了这一过程:
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器
挂载数据卷容器的方法:
docker run --volumes-from 容器名字
docker inspect --format =“{{.volumes}}”查看inspect中的数据 不会返回数据卷容器的信息,只会返回数据卷容器的挂载目录
docker rm -v 删除容器卷,-l移除容器间的网络连接 在docker中只要有一个容器在使用数据卷,数据卷就不会被删除
数据卷容器的作用仅仅是把数据卷配置传递到容器中
docker数据卷的备份和还原
命令如下:通过一个容器运行一个命令实现一条命令操作
docker跨主及连接:
使用网桥跨主机连接:
通过网桥管理工具设置的网桥会在下次机器重启时失效,一般对网络配置文件进行修改文件
为etc/network/interfaces
优点:
配置简单,不依赖三方软件
缺点:
与主机在同网段,需要小心划分ip地址
需要有网段控制权,在生产环境中不易实现
不容易管理
兼容性不佳
使用Open vSwitch实现跨主机容器连接俗称ops
Open vSwitch是一个高质量,多层虚拟交换机
gre:通用路由协议简称
使用weave实现跨主机容器的连接
中文:编织,建立一个虚拟的网络,用于将运行在不同主机的docker容器连接起来
安装weave->启动weave->连接主机->通过weave启动容器
下载weave并且放在、user/bin/weave目录下
chmod a+x /usr/bin/weave 修改weave的模式让其可以运行
启动weave:weave launch
会启动一个weach的容器
使用weach启动一个容器
c2=$(weave run 192.168.1.2/24 -it ubunt /bin/bash)
c2是启动容器的id
想进入该容器只需要docker attach $c2