zoukankan      html  css  js  c++  java
  • Docker学习之基本概念

    Docker学习之基本概念

    作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西。

    什么是docker

    Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud 公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker项目后来还加入了Linux基金会,并成立推动开放容器联盟(OCI)。

    Docker使用Google公司推出的Go语言进行开发实现。在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极 大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。

    传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程 直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

    相比传统虚拟技术优点

    • 更高效的系统资源利用
    • 更快的启动时间
    • 一致的运行环境
    • 持续集成、交付,DevOps友好
    • 更轻松的维护、拓展

    基本概念

    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)

    镜像

    操作系统分为内核和用户空间,对linux,内核启动后,会挂载root文件系统为其提供用户空间支持。而docker镜像就好比这种root文件系统,提供容器运行时的程序、资源、配置、库等文件。镜像不包含任何动态东西,一旦镜像构建完成之后,便不会被改变。

    docker容器

    容器就好比一个实例化的镜像,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等等。

    容器的实质是进程。不过容器的进程是运行在一个隔离的环境中,运行在属于自己的独立的命名空间。所以在容器内进行的文件操作等,在宿主环境下是不可见的。

    docker仓库

    镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

    一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    通常,一个软件会放在一个仓库,仓库下的标签分别对应该软件的不同版本镜像,比如ubuntu:14.04,ubuntu是仓库名,14.04是标签名。通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不指定标签,则以latest作为默认标签。

  • 相关阅读:
    vim的script、function及command
    Vim中如何移动光标
    command模式下命令的匹配及help内容的搜索
    为什么vim编辑模式下ctrl-w可以前向删除单词及按键映射的展开
    gcc如何实现C++中函数auto返回类型推导
    sqlserver 列转行
    【java笔记】可变长参数(...)
    【c#笔记】可变长参数(params)
    【c#笔记】c#与java的差异:接口定义实现
    【java笔记】Calendar类的陷阱
  • 原文地址:https://www.cnblogs.com/vipzhou/p/8341481.html
Copyright © 2011-2022 走看看