docker初识

虚拟化的实现形式

1、主机级虚拟化
  Type-〡 :直接在硬件资源安装 Hyper-V ----> 虚拟机
  Type-〢 :在HOSTOS ---> VMWARE ---> 虚拟机
        # 硬件平台【HOSTOS】 --- > VMWARE --->虚拟机
    ? 减少中间环节--->提高效率(去掉内核--->资源隔离?)
2、容器级虚拟化
  硬件平台--->虚拟的资源环境管理器--->容器
  
  容器技术的实现有很多种(docker...)
  

 

如何实现虚拟化?
每个虚拟化的容器都需要单独的资源,这些资源包括(UTS,Mount,IPC,PID,User,Net)这些都要相互隔离,
这些内核级的Namespace原生支持
只不过其中User是在内核3.8以后才有的, centos7可以

 

资源控制 Control    Groups

把系统级的资源分成多个组,然后把每个组的资源量分配到特定的用户空间的进程上

 

 

 

虚拟化的实现

1、LXC( Linux Container)
Lxc-create  快速创建一个容器,名称空间
Template,创建完一个名称空间会自动执行的脚本;指向了系统发行版的仓库
前提:Cgroups和namespace
缺点:1、要学好lxc的各种工具,2、定制模板、3迁移困难,批量创建也不容易,4、隔离性不高
优点:提高性能

2、Docker

 

 

 

 

 

 

容易迁移
轻量级
解决了软件调度分发
资源利用率更高

 

 docker是lxc的增强版
早期版本:二次封装发行版,利用lxc做容器管理引擎,创建容器时不再是模板现场安装生成的,而是利用镜像技术,不会激活模板安装,而是连接镜像服务器,
        下载一个匹配一个你所创建的容器的镜像

 

 

 

 

docker建议一个容器一个进程
    
缺点:
  1、共享的文件多占空间
  2、程序出现故障,调试工具需要准备多份(一个容器一份)
  3、运维:编排工具来完成,增加了难度;
    
优点:
  1、分发容易,部署环境只需要有docker,到处可以运行
  2、降低了开发难度
  3、批量创建容易:(分层构建、联合挂载、数据脱离容器存储在外部)
  4、


运维编排:能在docker之上,把应用程序依赖关系、按顺序执行反映在启动、关闭时的应用逻辑之中

容器编排工具:
  docker的swarm+machine+composer
  Mesos+marathon
  Kubernets --- > k8s
  

 docker是golang开发的

DockerHub是docker默认registry

 

docker的架构

 

 

client 与docker_host分别是客户端、服务端
之间采用 unix.socket方式通信; 不是ip+port的方式

 

镜像:静态的

容器:动态的,有生命周期

docker  registry:
  为什么不是repository  
1、提供镜像服务的仓库
2、用户来获取镜像的认证工作
3、存放所有镜像的一个索引 

 

posted @ 2018-12-22 11:17  慕沁  阅读(151)  评论(0)    收藏  举报