• docker 简介


    本文为博主原创,未经允许不得转载:

      Docker是基于Go语言实现的云开源项目,Docker的主要目标是 Build ,Ship and Run Any App,Anywhere,也就是通过对应用组件的封装,分发,部署,运行等生命周期的管理,使用户的app及其运行环境能够做到“一次封装,到处运行”  

      Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

      docker解决了运行环境和配置软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。  

      虚拟机就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如windows系统里面运行linux系统,应用程序对此毫无感知,因为虚拟机上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响,这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变  

      虚拟机缺点:
        1.资源占用多 2.冗余步骤多 3.启动慢

      Why Docker?
        更轻量:基于容器的虚拟化,仅包含业务运行所需的runtime环境
        更高效:无操作系统虚拟化开销
        更敏捷,更灵活:分层的存储和包管理,devops理念,支持多种网络配置

      linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,有了容器,就可以将软件所需的所有资源打包到一个隔离的容器中,
    容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的资源和配置,系统因此而变得高效轻量,并保证部署在任何环境
    中的软件都能始终如一的运行

    docker和虚拟机的不同
    1.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上在运行所需应用进程
    2.而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更轻便
    3.每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源

    Docker 的架构:

      

      Docker daemonDocker守护进程)

      是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。

     ClientDocker客户端)

      是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。

     ImagesDocker镜像)

      docker镜像都是只读的,镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内存,包括代码,运行时,库,环境变量和配置文件

     Container(容器)

      容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过 Docker API或者 CLI命令来启停、移动、删除容器。

      可以把容器看做是一个简易版的linux环境(包括root用户权限,进程空间,用户空间,网络空间)和运行在其中的应用程序。

     Registry

      Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry来避免镜像的手动复制。

    docker三大特征:容器,镜像,仓库

      Docker镜像image就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建多个容器,它可以被启动,开始,停止,删除,每个容器都是互相隔离的,保证安全的平台。

    仓库(Repository)是集中存放镜像文件的场所
      仓库和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签

    仓库分为公开仓库和私有仓库两种形式
      最大的公开仓库是Docker Hub(https://hub.docker.com),存放了数量庞大的镜像供用户下载,国内的公开仓库包括阿里云,网易云等;


    阿里云镜像加速配置:

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://3q5mnu1c.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

  • 相关阅读:
    Maven版本管理
    ArrayList集合实现RandomAccess接口有何作用?为何LinkedList集合却没实现这接口
    java常用集合框架关系
    重写equals和hashCode
    项目的继承和聚合详解
    Installation Manager1.8安装
    关于java按位操作运算
    正数负数的二进制表示
    springboot问题排解
    int和Integer有什么区别
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15306846.html
Copyright © 2020-2023  润新知