搜鞥都哦 发表于 2019-2-21 09:20:54

Docker容器技术入门


[*]  虚拟化与容器
      虚拟化
        主机级虚拟化
              Type-I

              Type-II

        容器级虚拟化

              FreeBSD jail, 2000
              Linux VServer, 2001
      KVM and container      
        虚拟化使得许多操作系统可同时在单个系统上运行。
        容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
  KVM and lxc Architecture


[*]  LXC Linux Container
      Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
     
  


[*]  Linux Namespaces 名称空间
      用户名称空间的改进推动了容器的进一步发展。用户名称空间“使得用户和组 ID 可以按名称空间进行映射。对于容器而言,这意味着用户和组可以在容器内部拥有执行某些操作的特权,而在容器外部则没有这种特权。
  
      Namespaces
      UTS namespaces:主机名与域名
      Mount namespaces:挂载点
      IPC namespaces:信号量、消息队列和共享内存
      PID namespaces:进程号
      Network namespaces:网络设备、网络栈、端口等
      User namespaces:用户和组
  
[*]  Control Groups(cgroups) 控制组
      控制组 (cgroups) 是一项内核功能,能够控制和限制一个进程或多组进程的资源使用。而 systemd 初始化系统可设置用户空间,并且管理它们的进程,cgroups 使用该系统来更严密地控制这些隔离进程。
      cgroups
        blkio:块设备IO

        cpu:CPU

        cpuacct:CPU资源使用报告

        cpuset:多处理器平台上的CPU集合

        devices:设备访问

        freezer:挂起或恢复任务

        memory:内存用量及报告

        perf_event:对cgroup中的任务进行统一性能测试
        net_cls:cgroup中的任务创建的数据报文的类别标识符


[*]  Docker
  
      早期版本:LXC ---> LXC的二次发行版
      一个容器中只运行一个进程;镜像构建:分层构建,联合挂载
      进程终止容器也可删除,容器有生命周期。与宿主机没有密切关联关系
      容器编排工具:Machine+Swarm+Compose

                    ASF:Mesos+marathon
        kubernetes:k8s

      Docker后来自建了容器引擎:---> libcontainer ---> runC

      Docker ---> Moby

      Docker容器的优势

        模块化

        层和镜像版本控制

        回滚

        快速部署

  

[*]  参考文档:https://www.redhat.com/zh/topics/containers/whats-a-linux-container
[*]  Docker Architecture
      C/S架构的应用程序
     
      Containers:容器

      Images:镜像

        存储镜像要使用特殊的文件系统,1.18版本默认使用的是:overlay2文件系统

        在Docker主机本地存储

      Registries:镜像仓库

        从Docker hub获取,站点:https://hub.docker.com/   
        Docker Registries有两重功能

              1、提供镜像存储的仓库

              2、用户来获取镜像的认证,当前服务器上所有可用镜像的搜索功能等

              repository ---> repo 一个仓库只放一个应用程序镜像;可以放同一程序的不同版本,仓库名+标签来唯一标识一个镜像;一个镜像可有多个标签(tag),不给标签名默认使用latest最新版。
      镜像与容器关系:

        镜像:静态

        容器:动态

      镜像与容器的关系就是程序与进程的关系;镜像是静态的,不会运行。容器则是动态的,它有生命周期。


[*]  Docker objects
      images

      containers

      networks

      volumes

      plugins




页: [1]
查看完整版本: Docker容器技术入门