Docker容器技术入门

  • 拟化与容器

    虚拟化

        主机级虚拟化

            Type-I

            Type-II

        容器级虚拟化

            FreeBSD jail, 2000

            Linux VServer, 2001

    KVM and container      

            虚拟化使得许多操作系统可同时在单个系统上运行。

            容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。

    扫描二维码关注公众号,回复: 2528144 查看本文章

    KVM and lxc Architecture

    è™šæ‹ŸåŒ–与容器

  • LXC Linux Container

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

    ä»€ä¹ˆæ˜¯å®¹å™¨


  • Linux Namespaces 名称空间

    用户名称空间的改进推动了容器的进一步发展。用户名称空间“使得用户和组 ID 可以按名称空间进行映射。对于容器而言,这意味着用户和组可以在容器内部拥有执行某些操作的特权,而在容器外部则没有这种特权。

    Namespaces

        UTS namespaces:主机名与域名

        Mount namespaces:挂载点

        IPC namespaces:信号量、消息队列和共享内存

        PID namespaces:进程号

        Network namespaces:网络设备、网络栈、端口等

        User namespaces:用户和组

    image.png

  • 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

    image.png

    早期版本: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架构的应用程序

    image.png

    Containers:容器

    Images:镜像

        在Docker主机本地存储

    Registry:镜像仓库

        从Docker hub获取,站点:https://hub.docker.com/

猜你喜欢

转载自blog.51cto.com/10461810/2154263