1 Docker容器技术
Docker本身是一个容器运行载体或称之为管理引擎。
我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生存Docker容器实例。
根据镜像创建多个容器,每个容器是独立的操作系统,能设置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仓库概念一致,也有远程仓库的思想(可以从远程仓库下镜像)和私服的思想(在本地做镜像仓库,如阿里云,可以自己封装镜像)。镜像都会保存在仓库中,创建容器是根据镜像的规定进行拉取,可以共享。
1.4 Docker的版本及要求
Docker分为docker-ce(社区版-开源)和docker-ee(企业级-收费)
Docker必须运行在Linux kernel 3.8及以上版本,一般安装在Centos7或者Ubantu系统上。
使用uname -a
检查当前linux内核版本。
必须3.10以上版本,linux内核才能支持容器化的技术。