zoukankan      html  css  js  c++  java
  • docker 介绍

    Docker引擎介绍 (Docker Engine)

    Docker Engine是一个包含以下组件的客户端-服务端(C/S)应用程序

    服务端 — 一个长时间运行的守护进程(Docker Daemon)
    
    REST API — 一套用于与Docker Daemon通信并指示其执行操作的接口
    
    客户端 — 命令行接口CLI( Command Line Interface)
    

    ![](https://raw.githubusercontent.com/cwyfengyiyuan/images/master/1598069395_20200822115544507_20980.png =820x)

    CLI利用Docker命令通过REST API直接操控Docker Daemon执行操作

    Docker Daemon负责创建并管理Docker的对象(镜像、容器、网络、数据卷)

    Docker结构概览介绍

    1000

    Docker客户端(Docker Client)

    Docker客户端(Docker Client)是用户与Docker进行交互的最主要方式。当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST连接远程服务端。
    

    Docker服务端(Docker Server)

    Docker Daemon其实就是Docker 的服务端。它负责监听Docker API请求(如Docker Client)并管理Docker对象(Docker Objects),如镜像、容器、网络、数据卷等
    

    Docker Registries

    俗称Docker仓库,专门用于存储镜像的云服务环境.
    
    Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件。同样的也可以类似Github那样搭建私有的仓库。
    

    Docker 对象(Docker Objects)

    镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
    
    容器:镜像被运行起来后的实例。
    
    网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式。
    
    数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录。
    

    Docker 底层技术

    1. Docker使用Go语言实现,利用linux内核的几个特性来实现功能
    利用linux的命名空间(Namespaces)
    
    利用linux控制组(Control Groups)
    
    利用linux的联合文件系统(Union File Systems)
    
    这也就意味着Docker只能在linux上运行。
    
    在windows、MacOS上运行Docker,其实本质上是借助了虚拟化技术,然后在linux虚拟机上运行的Docker程序。
    
    1. 容器格式( Container Format )
    Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package,就是一个容器格式(Container Format)。Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期管理。
    
    容器格式(Container Format)有多种,其中Docker目前使用的容器格式被称为libcontainer
    
    1. Namespaces(命名空间),为Docker容器提供操作系统层面的隔离
    进程号隔离:每一个容器内运行的第一个进程,进程号总是从1开始起算
    
    网络隔离:容器的网络与宿主机或其他容器的网络是隔离的、分开的,也就是相当于两个网络
    
    进程间通隔离:容器中的进程与宿主机或其他容器中的进程是互相不可见的,通信需要借助网络
    
    文件系统挂载隔离: 容器拥有自己单独的工作目录
    
    内核以及系统版本号隔离:容器查看内核版本号或者系统版本号时,查看的是容器的,而非宿主机的
    
    1. Control Groups(控制组-cgroups),为Docker容器提供硬件层面的隔离
    控制组能控制应用程序所使用的硬件资源。
    
    基于该性质,控制组帮助docker引擎将硬件资源共享给容器使用,并且加以约束和限制。如控制容器所使用的内存大小。
    
    1. Union File Systems(联合文件系统–UnionFS),利用分层(layer)思想管理镜像和容器
  • 相关阅读:
    CentOS查看CPU信息、位数、多核信息
    Linux常用命令大全
    chmod命令详细用法
    tar命令的详细解释
    yum和rpm命令详解
    LeetCode 241. Different Ways to Add Parentheses
    LeetCode 139. Word Break
    LeetCode 201. Bitwise AND of Numbers Range
    LeetCode 486. Predict the Winner
    LeetCode 17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/13545679.html
Copyright © 2011-2022 走看看