Docker介绍
一、什么是docker
Docker本质上是一个采用虚拟化技术的容器,基于Linux容器进行再封装,使用户不用关心容器的管理,而简化应用操作。
二、docker的目标
提供简单轻量的建模方式
职责的逻辑分离
快速高效的开发生命周期
鼓励使用面向服务的架构
三、docker的使用场景
使用docker容器开发、测试、部署服务
创建隔离的运行环境
搭建测试环境
构建多用户的平台即服务(PaaS)基础设施
提供软件即服务(SaaS)应用程序
高性能、超大规模的宿主机部署
四、docker的网络连接
1、docker容器的网络基础
docker0为docker容器提供网络连接的各种服务
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个地址
安装网桥管理工具:apt-get install bridge-utils
查看网桥设备:brctl show
修改docker0地址:ifconfig docker0 192.168.200.1(新地址) netmask 255.255.255.0(子网掩码)
自定义虚拟网桥:
添加虚拟网桥:brctl addbr br0
ifconfig br0 192.168.100.1 net 255.255.255.0
更改docker守护进程的启动配置:
/etc/defult/docker 中添加DOCKER_OPTS='-b=br0'
2、docker容器的互联
允许所有容器间互联:--link
拒绝所有容器间互联:--icc=false /etc/defult/docker 中添加DOCKER_OPTS='--icc=false'
允许特定容器间的连接: --icc=false --iptables=true --link
docker利用iptables中的机制将icc=false时阻断所有的docker容器间的数据访问,
仅仅允许利用link选项配置的容器进行相互访问
3、docker容器与外部网络的连接
ip_forward:
查看ip_forward的值:sysctl net.ipv4.conf.all.forwarding 已经设置为1
iptables:
iptables是与linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含iptables的功能
五、docker容器的数据管理
1、docker容器的数据卷
数据卷(Data Volume):数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。
数据卷设计的目的在于数据的永久化,它完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。
docker的数据卷是独立于docker存在,存在docker宿主机中,与docker容器的生命周期是分离的
docker数据卷本本质是存在于docker宿主机中的文件系统
docker数据卷可以使目录也可以是文件
docker容器可以利用数据卷的技术与宿主机进行共享
同一个目录或文件可以支持多个容器的访问,实现了容器间数据的共享和交换
数据卷的特点:
数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
数据卷可以在容器之间共享和重用
可以对数据卷中的内容直接进行修改
数据卷的变化不会影响镜像的更新
卷会一直存在,即使挂载数据卷的容器已经被删除
数据卷的使用:
为容器添加数据卷:docker run -v $PWD/MySQL/data:/var/lib/mysql(本地文件/路径:容器文件/路径)
为数据卷添加访问权限:docker run -v $PWD/MySQL/data:/var/lib/mysql:ro
2、docker的数据卷容器
数据卷容器:命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫作数据卷容器
挂载数据卷容器的方法:docker run --volumes-from CONTAINER NAME(容器名字)
--volumes-from:指定新建容器所连接的数据卷容器
CONTAINER NAME:已经挂载了数据卷的容器的名字
docker run --name redis 开启一个容器,在容器中挂载数据卷,成为一个数据卷容器
docker run --name mysql -it --volume-from redis 再开启一个容器,通过--volume-from连接数据卷容器,
则这个容器可以访问数据卷容器中的数据卷
在docker容器中,如果一个数据卷还在被容器使用,那么,它就会一直存在,
验证了使用数据卷容器挂载数据,实际上这个容器所起的作用仅仅是将数据卷挂载的配置传递到挂载了数据卷容器的容器中
3、docker数据卷的备份和还原
数据备份方法:
docker run --volume-from 指定备份数据卷容器 -v $PWD/backup:/backup tar cvf /backup/backup.tar /指定备份的数据卷
数据还原方法:
docker run --volume-from container name -v $PWD:/backup
tar xvf /backup/backup.tar
六、docker容器的跨主机访问
1、使用网桥实现
2、使用open vswitch实现
3、使用weave实现