6- 网络
6.1- docker0
docker0是一个虚拟网桥。
linux 虚拟网桥特点:
- 可以设置ip地址
- 相当于拥有一个隐藏的虚拟网卡
docker0的地址划分:
-
ip: 172.17.16.1 掩码: 255.255.255.0
-
mac: 02:42:ac:11:00:00 到 02:42:ac:11:ff:ff
-
一共65534个地址
修改docker0的地址:ifconfig docker0 10.0.0.1 netmask 255.255.255.0
6.2- 自定义虚拟网桥
brctl addbr br0 ##添加虚拟网桥
ifconfig br0 192.168.100.1 netmask 255.255.255.0
vi /etc/default/docker
DOCKER_OPS="-b=br0"
service docker restart
6.3- 容器间互联
允许使用别名连接其他容器(即使其他容器Ip地址改变也可以连接),docker会自动修改ip地址和别名之间的映射。
改变了etc/hosts里面的内容和env环境变量的内容。
docker run --link=[container_name]:[alias] [image] [command]
6.4- 拒绝所有容器间互联
vi /etc/default/docker
DOCKER_OPS=” --icc=false"
6.5- 允许特定容器间互联
vi /etc/default/docker
DOCKER_OPS=" --iptables=true" #允许docker修改linux的iptables配置
6.6- 容器与外部网络的连接
- ip_forward
- iptables
- 允许端口映射访问
- 限制IP访问容器
【ps】:ip_forward: linux的系统变量,决定系统是否会转发流量。
vi /etc/default/docker
DOCKER_OPS" --ip_forward=true" #默认,会将系统的ip_forward参数设置为1
7- 数据管理
7.1- 容器的数据卷
7.1.1- 数据卷介绍
_ _ _ 数据卷是经过特俗设计的目录,可以绕过联合文件系统UFS,为一个或多个容器提供访问。
7.1.2- 目的
_ _ _ 目的在于数据的持久化,数据卷完全独立于容器的生存周期。Docker不会再容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制对容器引用的数据卷进行处理。
7.1.3- 特点
- 在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到初始化的数据卷中。
- 可以在容器之间共享和重用
- 可以对数据卷的内容直接进行修改
- 数据卷的变化不会影响镜像的更新
- 卷会一直存在,即使挂载数据卷的容器已经被删除
7.1.4- 挂载数据卷
docker run -v /host_dir:/data -it centos /bin/bash
- /host_dir 必须存在
- /data如果不存在,则自动创建。
使用dockerfile 制作的镜像里面默认挂在的数据卷,启动容器时,是自动在
/var/lib/docker/vfs/dir里面自动分配的目录,这个生成的容器,相互之间的数据独立的
。
7.2- 数据卷容器
7.2.1- 介绍
_ _ _ 命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,被挂载数据卷的容器,就叫做数据卷容器。
如图:
- Data container可以是正在运行或者停止的容器
- 此时container所挂载是数据卷,实际为data container已经挂载的所-
- 在/var/lib/docker/vfs/dir里面的目录
- data container删除了,但是data container曾经挂载的volume是不删除。即是/var/lib/docker/vfs/dir里面的目录不会删除,依然可以被container挂载使用
7.2.2- 挂载数据容器
docker run --volumes-from [container_name]
7.3- 数据卷的备份和还原
7.3.1- 数据备份
docker run --volumes-from [container_name] -v $(pwd):/backup centos tar cvf /backup/backup.tar [container data volume]
例如:
docker run --volumes-from backup1 -v /backup:/backup --name backup2 centos tar cvf /backup/backup.tar /datavolume
7.3.2- 数据恢复
docker run --volumes-from [container_name] -v /backup:/backup centos tar xvf /backup/backup.tar [container data volume]