Docker容器化技术
2019-04-28 本文已影响0人
ssttIsme
1 Docker容器技术
![](https://img.haomeiwen.com/i5128967/f146ab769a4a8990.png)
根据镜像创建多个容器,每个容器是独立的操作系统,能设置ip地址,是个轻量的虚拟机。
Docker使用go语言开发,go是高并发最快的高级语言。
使用Docker能完全替代VM虚拟化技术。
1.1 需求场景
Docker 提供轻量的虚拟化,通过docker镜像能创建出多个容器,一个容器相当于一个虚拟机。可以把镜像快速部署到无数台服务器上。
1.2 Docker与虚拟机对比
每个虚拟器需要安装一个操作系统
虚拟机:资源全部隔离,cpu、内存、磁盘相互独立,一台宿主机中可以安装的虚拟机数量是一定的,有限的,移植性不强(文件很大,拷贝传输困难)。
Docker:部分共享部分隔离,共享cpu,内存,磁盘甚至操作系统,极为轻量。瞬间启动,达到秒级,共享资源,能启动更多实例,一个docker容器能启动50到200个进程。
1.3 Docker五大要素
- 沙箱:隔离,将应用之间的必要资源隔离开,防止互相影响,应用之间互相独立。
- 镜像Image(只读):把技术(如redis、rabbitmq)包装起来,使之具有docker特性(随时启动,关闭)。镜像可以拆分,传输使用dockerfile。
- 容器Container(可写):容器是从镜像创建的运行实例。容器包含某个镜像,容器可写,
容器关闭后临时数据被释放掉(删掉)
。这种设计让docker占用的磁盘资源更少。
- 数据卷Volume(补丁):做一个数据目录挂载到容器上,把持久的数据写入到这个目录中。比如容器中数据库的数据,但是不建议使用,因为重启容器需要挂载同步数据,效率低。解决方式:一般有永久的数据就不建议使用容器化技术。
- 仓库Repository:与maven仓库概念一致,也有远程仓库的思想(可以从远程仓库下镜像)和私服的思想(在本地做镜像仓库,如阿里云,可以自己封装镜像)。镜像都会保存在仓库中,创建容器是根据镜像的规定进行拉取,可以共享。
![](https://img.haomeiwen.com/i5128967/a77e37792a207b35.png)
1.4 Docker的版本及要求
Docker分为docker-ce(社区版-开源)和docker-ee(企业级-收费)
Docker必须运行在Linux kernel 3.8及以上版本,一般安装在Centos7或者Ubantu系统上。
使用uname -a
检查当前linux内核版本。
必须3.10以上版本,linux内核才能支持容器化的技术。