docker依赖linux内核,只能运行linux下的系统
什么是容器?
容器是一种虚拟化方案(直接运行在操作系统内核之上的用户控件)也被称为操作系统虚拟化,只能运行相同或相似的操作系统。
优点:只需要包含应用和需要的库,不需要完整的操作系统。磁盘资源占用空间更少,减少了磁盘、cpu、内存的压力。
什么是Docker?
Docker是将应用程序自动部署到容器的开源引擎。
Docker目标?
提供简单轻量的建模;(非常容易上手,很容易将应用程序docker化)
职责的逻辑分离(开发人员只需要关心容器中运行的应用程序,运维只需关心如何管理容器)
快速高效的开发生命周期(缩短从开发、测试、部署上线运行的周期,具备可移植性,在容器中开发,以容器的形式交付与分发,开发测试都使用同一环境,有效缩短调试部署的生命周期)
鼓励使用面向服务的架构(单个容器只运行一个应用程序,形成分布式应用模型。)
Docker使用场景
- 使用Docker容器开发、测试、部署服务
- 创建隔离的运行环境
- 搭建测试环境
- 构建多用户的平台及服务(Pass)基础设施
- 提供软件及服务(Sass)应用程序
- 高性能、超高规模的宿主机部署
Docker基本组成
- 客户端 Docker Client (C/S架构 客户端发送命令,守护进程将命令转发给服务器)
- 守护进程 Docker Daemon
- 镜像 Docker Image (容器的基石,层叠的只读文件系统,联合加载 属于打包阶段)
- 容器 Docker Container (通过镜像启动,写时复制 属于启动执行阶段)
- 仓库 Docker Registry (保存用户镜像 公用、私有、DockerHub)
- Docker 依赖的Linux内核特性
- nameSpaces 命名空间 (每个命名空间相当于一个容器,完成系统资源的隔离,同一个命名空间内的变化可以感知,其它的感知不到)
- Control groups(cgroups) 控制组 (资源限制,优先级设置,资源计量、资源控制)
Docker容器的能力?
- 文件系统的隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和ip地址都是分开的
- 资源的隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个Docker容器
网友评论