zoukankan      html  css  js  c++  java
  • 2.docker架构,原理,安装及简单应用

    本小节主要内容:

    1. docker的架构

    2. docker安装及应用

    3. 底层原理


    一. docker的架构

    1. 看官网,docker的架构描述: https://docs.docker.com/get-started/overview/

    Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。

    The Docker daemon(Docker守护程序)

    Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。

    The Docker client(Docker客户端)

    Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行它们。docker命令使用Docker API。Docker客户端可以与多个守护程序通信。

    Docker registries(Docker仓库)

    Docker registries存储Docker映像。Docker Hub是任何人都可以使用的公共注册表,并且默认情况下,Docker已配置为在Docker Hub上查找映像。您可以运行自己的私人注册表。如果使用Docker数据中心(DDC),则其中包括Docker可信registries(DTR)。

    使用docker pulldocker run命令时,所需的图像将从配置的注册表中提取。使用该docker push命令时,会将映像推送到配置的注册表。

    Docker objects(Docker对象)

    使用Docker时,您正在创建和使用映像,容器,网络,卷,插件和其他对象。本节是其中一些对象的简要概述。

    • images

    一个图像是用于创建一个码头工人容器指令的只读模板。通常,一个映像基于另一个映像,并进行一些其他自定义。例如,您可以基于该ubuntu 映像构建映像,但是安装Apache Web服务器和您的应用程序,以及运行该应用程序所需的配置详细信息。

    您可以创建自己的图像,也可以仅使用其他人创建并在注册表中发布的图像。要构建自己的映像,您可以 使用简单的语法创建一个Dockerfile,以定义创建映像并运行它所需的步骤。Dockerfile中的每个指令都会在映像中创建一个层。当您更改Dockerfile并重建映像时,仅重建那些已更改的层。与其他虚拟化技术相比,这是使映像如此轻巧,小型和快速的部分原因。

    • container

    容器是图像的可运行实例。您可以使用Docker API或CLI创建,启动,停止,移动或删除容器。您可以将容器连接到一个或多个网络,将存储连接到它,甚至根据其当前状态创建新映像。

    默认情况下,容器与其他容器及其主机之间的隔离程度相对较高。您可以控制容器的网络,存储或其他基础子系统与其他容器或与主机的隔离程度。

    容器由其映像以及在创建或启动时为其提供的任何配置选项定义。删除容器后,未存储在持久性存储中的状态更改将消失。

     docker基本要素

    镜像: 容器, 仓库

    二.docker的安装及应用

    1. docker支持的centos版本

    • Centos7(64-bit)
    • Centos6.5(64-bit)

    2. docker安装的前提条件

    • 目前centos仅发行版本的内核支持docker
    • docker运行在centos7上, 要求系统为64位,系统内核版本为3.10以上
    • docker运行在centos6.5或更高版本上,要求系统64位,系统内核版本为2.6.32-431或者更高版本

     uname命令打印系统相关信息

    uname -r

     查询系统版本

    cat /etc/redhat-release

     3. centos6.5及以上的安装docker

    第一步. yum install -y epel-release
    
    docker使用EPEl发布, RHEL系的OS首先要确保已经持有EPEL仓库,否则先检查OS的版本, 然后安装响应的EPEL包

    第二步: 安装docker.   
    yum install -y docker-io
    第三步:查看配置文件
    centos 6.5及以上: /etc/sysconfig/docker
    centos 7: /etc/docker/daemon.json
    有这个配置文件, 说明docker是安装成功了
    第四步:启动docker
    service docker start
    第五步: 检查docker是否启动成功
    ps -ef|grep docker
    docker version

     4. 配置阿里云镜像加速器

    第一步:访问国内阿里云的网址
    dev.aliyun.com
    
    第二步:登录
    
    第三步: 获取镜像地址
    https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

     centos6.5配置如下, 将加速地址放在other_args里面

     centos7, 参考阿里云的配置方法

     

    sudo mkdir -p /etc/docker
    
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://w52p8twk.mirror.aliyuncs.com"]
    }
    EOF
    
    sudo systemctl daemon-reload
    
    sudo systemctl restart docker
    第四步:重启docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    第五步:拉取docker镜像helloworld

     寻找镜像的流程

     

    三. docker的底层原理 

     1. docker是怎么工作的?

    docker是一个client-server结构的系统,Docker的守护进程运行在主机上, 然后通过Socket连接从客户端访问, 守护进程从客户端接受命令并管理运行在主机上的容器, 容器,是一个运行时环境, 就是我们前面说到的集装箱 

    2. 从结构上看虚拟机和容器的区别

    docker将虚拟机的Hypervisor和操作系统应将cpu, 内存等拿到. 替换成了Docker Engine. 而这两块恰恰就是虚拟机笨重的地方. 

      docker容器 虚拟机VM
    操作系统 与宿主机共享OS

    宿主机OS上运行虚拟机OS

    存储大小 镜像小, 便于存储和传输 镜像庞大(vmdk, vdi等)
    运行性能 几乎无额外性能损失 操作系统额外的CPU,内存消耗
    移植性 轻便,灵活,适用于linux系统 笨重, 与虚拟机技术耦合度高
    硬件亲和性 面向软件开发者 面向硬件运维者
    部署速度 快速, 秒级 较慢, 10s以上

     

     

     

     

     

     

     

     

     

    以上是虚拟机和容器的区别

     

  • 相关阅读:
    SQL索引一步到位
    Timeout expired超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
    电脑开机的相关设置
    SELECT时为何要加WITH(NOLOCK)
    Sqlserver2008R2 数据库镜像配置步骤
    读写分离提高 SQL Server 并发性能
    八、数据结构
    七、数据库技术基础(二)
    缓存
    七、数据库技术基础(一)
  • 原文地址:https://www.cnblogs.com/ITPower/p/12945711.html
Copyright © 2011-2022 走看看