盘Docker吗?Docker必备基础理论导读!

前言

  • Docker自2013年爆红以来,一直独领风骚,以下是我整理的一些Docker基础理论,个人感觉这些是以后玩Docker,K8S等的敲门砖,很基础,很重要!

一:DOCKER理论

1.1:什么是docker?有什么作用?

  • mark
  • Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。
  • 是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
  • 沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制
  • Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。
  • Docker从一开始就以提供标准化的运行时环境为目标,真正做到“build once, run anywhere”,可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了CaaS(容器即服务)技术。

1.2:Docker的使用场景

  • 打包应用程序简单部署
  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
  • 持续集成和持续交付(CI/CD):开发到测试发布
  • 部署微服务
  • 提供PAAS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S) 属于PAAS}

1.3:Docker引擎(Docker Engine)

  • Docker Engine是具有以下主要组件的客户端-服务器应用程序:
  • 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
  • REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
  • 命令行界面(CLI)客户端(docker命令)。
  • mark

1.4:Docker的架构(Docker architecture)

  • Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

  • Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

  • Docker Client:客户端

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

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

    • 容器可以被打包成镜像
  • Docker container:容器

  • Docker registry:镜像仓库

    • 存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库。

mark

1.5:容器与虚拟机的区别

  • mark

  • 不同点 container VM
    启动速度 秒级 分钟级
    运行性能 接近原生(直接在内核中运行) 5%左右损失
    磁盘占用 MB GB
    数量 成百上千 一般几十台
    隔离性 进程级别 系统级别(更彻底)
    操作系统 主要支持Linux 几乎所有
    封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统,与宿主机隔离

1.7:名称空间(Namespaces)

  • Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组 名称空间
  • 这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
  • Docker Engine在Linux上使用以下名称空间:
    • **该pid命名空间:**进程隔离(PID:进程ID)。
    • **该net命名空间:**管理网络接口(NET:网络)。
    • **该ipc命名空间:**管理访问IPC资源(IPC:进程间通信)。
    • **该mnt命名空间:**管理文件系统挂载点(MNT:mount)。
    • **该uts命名空间:**隔离内核和版本标识符。(UTS:Unix时间共享系统)。

1.8:控制组(Control groups)

  • Linux上的Docker引擎还依赖于另一种称为控制组cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

1.9:博客结束,谢谢观赏!如有疑问可以私信或者评论区交流!

原创文章 172 获赞 97 访问量 5万+

猜你喜欢

转载自blog.csdn.net/CN_TangZheng/article/details/105396344