美文网首页
Docker简介

Docker简介

作者: jan29 | 来源:发表于2020-08-15 08:51 被阅读0次

    以下内容转载于Breeze
    原博客地址:https://www.cnblogs.com/breezey/

    一、Docker简介

    1、什么是Docker

    Docker - Build,Ship,and Run Any App, Anywhere

    Docker的英文翻译是“码头工人”,即搬运工,它搬运的东西就是我们常说的集装箱Container,Container里面装的是任意类型的App。我们的开发人员可以通过Docker将App变成一种标准的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

    从概念上来看,Docker和传统的虚拟机比较类似,只是更轻量级,更方便使用。Docker和虚拟机最主要的区别有以下几点:

    • 虚拟化技术依赖的是物理CPU和内存,是硬件级别的;Docker是构建在操作系统层面的,复用操作系统的容器化技术,所以Docker同样可以运行在虚拟机上面。
    • 虚拟机中的操作系统是一个完整的操作系统镜像,比较复杂;而Docker比较轻量级,我们可以用Docker部署一个独立的redis,就类似于在虚拟机当中安装一个redis应用,但Docker部署的应用是完全隔离的。
    • 传统的虚拟机技术是通过快照来保存状态的;而Docker引入了类似于源码管理的机制,将容器历史版本一一记录下来,切换成本非常之低。
    • 传统的虚拟化技术在构建系统的时候非常复杂;而Docker可以通过一个简单的Dockerfile文件来构建整个容器,更重要的是Dockerfile可以手动编写,这样应用程序开发都可以通过发布Dockerfile来定义应用的环境和依赖,对于持续交付非常有利。

    下面是docker与虚拟机的简单对比图:


    docker_vs_VM docker_vs_VM_2

    Docker运行在物理机上与运行在虚拟机上的对比:


    docker_vs_VM_2

    2、为啥要用容器

    一个做好的应用容器长的就像一个装好了一组特定应用的虚拟机一样,比如我们现在想用redis,那我就找个装好了redis的容器就可以了,然后运行起来,我就能直接使用了。

    那为什么不直接安装一个redis呢?肯定是可行的,但是有的时候根据每个人电脑的不同,操作系统的不同,redis的安装方法也各不相同。而且万一机器故障,应用迁移,所有当前机器上安装的应用还需要在新的机器上再全部重新安装一次。但是如果使用容器就要简单多了,你就相当于有了一个快速运行起来的虚拟机,而且方便快速移植。只要你能运行容器,redis的配置就省了。

    Docker的特性:

    • 标准化
      • 保证一致的运行环境
      • 弹性伸缩,快速扩容
      • 方便迁移
      • 持续集成、持续交付与持续部署
    • 高性能
      • 不需要进行硬件虚拟以及运行完整的操作系统
    • 轻量级
      • 快速启动
    • 隔离性
      • 进程隔离

    3、Docker Engine

    Docker Engine是一个C/S架构的应用程序,主要包含以下几个组件:

    • 常驻后台进程Dockerd
    • 一个用来与Dockerd交互的REST API Server
    • 命令行CLI接口,通过与REST API进行交互(docker命令)
    docker_engine

    4、Docker架构说明

    Docker使用C/S体系的架构,Docker客户端与Docker守护进程通信,Docker守护进程负责构建,运行和分发Docker容器。Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程使用REST API通过unix套接字或网络接口进行通信。

    下面是Docker核心组件及元素说明:

    • Docker Daemon: dockerd,用来监听Docker API的请求和管理Docker对象,比如镜像、容器、网络和Volume。
    • Docker Client:docker,docker client是我们和Docker进行交互的最主要的方式方法,比如我们可以通过docker run 命令来运行一个容器,然后我们的docker client会把命令发送给上面的Dockerd,主它来负责处理。
    • Docker Registry:用来存储Docker镜像的仓库,Docker hub是官方提供的一个公共仓库,而且Docker默认也是从Docker Hub上查找镜像的。当然你也可以很方便的运行一个私有仓库,当我们使用docker pull或者docker run命令时,就会从我们配置的docker镜像仓库中去拉取镜像,使用docker push时,会将我们构建的镜像推送到对应的镜像仓库中。
    • Images:镜像,镜像是一个只读模板 ,带有创建docker容器的说明。一般来说,镜像会基于另外的一些基础镜像构建并加上一些额外的自定义功能。比如你可以构建一个基于centos的镜像,然后在这个基础镜像上面安装一个Nginx应用,这样就可以构建成属于我们自己的镜像了。
    • Containers:容器,容器是一个镜像的运行实例。可以使用Docker REST API或者CLI来操作容器。容器的实质是进程,但与直接在宿主机执行的进程不同,容器进行运行于属于自己独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户id空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主机运行更加案例。
    docker_arch.png

    另外,关于Docker的底层技术支持:Namespaces(实现隔离)、CGROUPS(资源限制)、UnionFS(镜像和容器分层),可以参考:《docker核心技术与实现原理》,以及《docker官方文档》

    相关文章

      网友评论

          本文标题:Docker简介

          本文链接:https://www.haomeiwen.com/subject/bpigdktx.html