docker基础入门之一

简介: 一、概述   1、传统虚拟化技术:      纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统;      硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率;     解决方案:       商业版解决方案:VMware vSphe...

一、概述

  1、传统虚拟化技术:

     纯软件的虚拟化是通过对于硬件层的模拟从而实现允许运行多个操作系统;

     硬件辅助虚拟化需要硬件层面对于虚拟化的支持,类似Intel-VT技术等,具有更高的运行效率;

    解决方案:

      商业版解决方案:VMware vSphere、 VMware Fusion

      开源解决方案:KVM、Xen

  2、system-level虚拟化(container虚拟机技术):

     不需要模拟硬件层;

     共享同一个HOST OS的Kernal

      user space  instance = Container

        

    解决方案:

      LXC:

      OpenVZ:

      Docker:

      Imctfy:google开源的容器虚拟实现

  3、容器虚拟化和传统虚拟化的区别:

  传统虚拟化 容器虚拟化
创建速度 很慢 非常快
性能影响

通过对于硬件层的模拟,增加了系统调用链路

的环节,有性能损耗

共享Kernel,几乎没有性能损耗
资源消耗 很大 

很小,一台机器可以轻松创建多个

Container

操作系统覆盖 支持Linux、windows、Mac等 仅仅支持Kernal所支持的OS

  4、container核心技术cgroups,namespace,chroot:

    CGroups 限制容器的资源使用;

      Linux内核提供的限制,记录和隔离进程组所使用的资源,由Google工程师提出,后来整合进kernel;

      通过不同的子系统(blkio、cpu、cpuacct等)来实现对不听资源使用的控制和记录; 

    Namespace机制,实现容器间的隔离;

      pid,容器有自己独立的进程表和1号进程

      net,容器有自己独立的network info

      ipc,在ipc通信时候,需要加入额外信息来标识进程;(进程间通信)

      mnt,每个容器有自己唯一的目录挂载;

      utc,每个容器有独立的hostname和domain

    chroot,隔离根文件系统:

      将host os的某个目录隔离成container的根目录;

二、进入Docker的世界:  

  dotCloud是docker公司的前身,专注于PaaS的云计算平台;可能是支持最广泛的PaaS平台;

  使用container的概念来解决应用stack部署的难题;  

  定义:什么是docker

    开源的应用容器引擎,方便打包发布应用到容器中;

    Go语音领域比较大型的应用;

  docker实现:

    docker是container技术的实现,最早使用LXC作为container的引擎,最新版本的docker使用libcontainer替换了lxc;

    采用aufs文件系统来管理Image和container

    基于C/S架构的实现,Server端使用UnixSocket,也可以切换到TcpProtocol;

  aufs文件系统:

    1、advanced multi  layer unification filesystem //先进的多层的联合文件系统

    2、可以实现把多个不同目录的内容合并在一起;

    3、允许read-only和read-write目录并存;

        

  docker中的aufs:

    docker使用aufs来实现分层的文件系统的管理;

    只读部分定义为Image,可写部分是container

    Image类似一个单链表系统,每个Image包含一个指向parent image的指针;

    没有parent Image的image是base Image

        

  docker hub:

    类似于Github服务,用来分发Image

    大量标准的Image,例如Tutum/Ubuntu, Tutum/Mysql

  docker的优点:

    构建标准化的应用运行的环境;

    良好的RestAPI的实现;

    Container的实现,更少的资源的使用,创建速度快;

  docker的局限性:

  • 基于Linux64的,不能在32bit的环境下运行;
  • GuestOS只能是Linux Base
  • 隔离性相对于KVM等虚拟化技术有所欠缺;
  • 采用cgroup的resource control对于cpu的度量很困难;
  • container随用户进程的停止而销毁;    

  docker和LXC的区别:

  1. docker更专注于部署,而LXC专注于进程的隔离;
  2. docker有更好的api的方便对于docker容器的管理;
  3. dockerfile让image的创建变得容易;
  4. 通过docker hub方便image的分享; 

  docker的未来:

  1. 网络
  2. 安全性
  3. 容器引擎

 

相关文章
|
1月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
137 0
|
4月前
|
Kubernetes 关系型数据库 MySQL
Docker Compose入门:打造多容器应用的完美舞台
Docker Compose 是一个强大的工具,它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景,并通过更为丰富和实际的示例代码,助您轻松掌握如何通过 Docker Compose 打造复杂而高效的多容器应用。
|
2月前
|
运维 虚拟化 开发者
Docker-全面详解(学习总结---从入门到深化)
Docker-全面详解(学习总结---从入门到深化)
48 1
|
3月前
|
大数据 数据管理 Docker
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
218 0
|
8天前
|
存储 Ubuntu 关系型数据库
Docker从入门到精通:ubuntu系统安装docker
本文介绍了Docker的安装过程。首先,文章简述了Docker的组成部分:镜像(如模板用于创建容器服务)、容器(运行应用的独立实体)和仓库(存储镜像的库)。接着,针对Ubuntu系统,详细阐述了卸载旧版本Docker、更新软件包、安装依赖、添加Docker官方GPG密钥和软件源、安装Docker以及配置用户组的步骤。最后,通过启动Docker、验证安装是否成功(运行`hello-world`镜像)和查看Docker版本来确认安装完成。
43 12
|
16天前
|
Ubuntu Linux Shell
docker学习笔记3,从入门到精通
docker学习笔记3,从入门到精通
|
16天前
|
应用服务中间件 Shell nginx
docker学习笔记2,入门到精通
docker学习笔记2,入门到精通
|
16天前
|
Ubuntu 网络协议 Docker
docker学习笔记1,入门到精通
docker学习笔记1,入门到精通
|
2月前
|
Java Linux Docker
Docker入门到实战
Docker入门到实战、Centos7安装Docker
|
2月前
|
IDE 数据中心 Docker
使用PyCharm与Docker容器进行开发:从入门到精通
使用PyCharm与Docker容器进行开发:从入门到精通
302 0