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)思想管理镜像和容器
  • 相关阅读:
    Educational Codeforces Round 80 (Rated for Div. 2)
    2020 CCPC Wannafly Winter Camp
    Codeforces Round #613 (Div. 2)
    Codeforces Round #612 (Div. 2)
    Hello 2020
    Good Bye 2019
    Codeforces Round #590 (Div. 3)
    依赖注入
    Spring 拦截器
    rsync服务端一键安装rsync脚本(非源码)
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/13545679.html
Copyright © 2011-2022 走看看