【Docker】进阶之路:(二)Docker简介

【Docker】进阶之路:(二)Docker简介

  • 什么是 Docker
  • Docker 由来与发展历程
  • Docker的架构与组成
  • Docker容器生态
    • 容器核心技术
      • 容器规范
      • 容器平台技术
  • 为什么使用Docker
    • Docker的应用场景

什么是 Docker

简单地讲,Docker就是一个应用容器引擎,通过Docker,管理员可以非常方便地对容器进行管理。Docker基于Go语言开发,并且遵从Apache 2.0开源协议。
Docker提供了对容器镜像的打包封装功能。利用Docker,开发者可以将他们开发的应用系统以及依赖打包起来,放到一个轻量级的、可移植的容器中,然后发布到任何的Linux或者Windows上面。这样的话,Docker就统一了整个开发、测试和部署的环境和流程,极大地减少运维成本。
Docker完全使用沙箱机制,容器之间不会有任何的接口。

Docker 由来与发展历程

2010年,几个大胡子年轻人在美国旧金山成立了一家做PaaS(Platform-as-a-Service,平台即服务)平台的公司,并且起名为dotCloud。虽然dotCloud公司曾经获得过一些融资,但随着大厂商,包括微软、谷歌以及亚马逊等杀入云计算领域,dotCloud公司举步维艰。
幸运的是,上帝每关上一扇门,就会打开一扇窗。2013年初,dotCloud公司的工程师们决定将他们的核心技术Docker开源,这项技术能够将Linux容器中的应用代码打包,轻松地在服务器之间迁移。
令所有人意想不到的是,开源之后Docker技术风靡全球,于是,dotCloud公司决定改名为Docker,全身心投入到Docker的开发中。2014年8月,Docker公司宣布把PaaS业务dotCloud出售给位于德国柏林的PaaS服务提供商cloudControl,自此,dotCloud和Docker分道扬镳。

Docker的架构与组成

Docker采用C/S架构,即客户端/服务器架构。管理员通过Docker客户端与Docker服务器进行交互。Docker服务器端负责构建、运行和分发Docker镜像。用户可以把Docker的客户端和服务器部署在同一台机器上面,也可以分别部署在不同的机器上面,两者之间通过各种接口进行通信。
Docker的典型体系架构如图所示。
在这里插入图片描述

Docker容器生态

容器核心技术

容器核心技术是指能够让 container 在 host 上运行起来的那些技术。 这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry以及容器OS,下面分别介绍。

容器规范

容器不仅有 Docker,还有如 CoreOS 的 rkt等其他容器。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包括Docker、CoreOS、Google等在内的若干公司共同成立了 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。OCI已发布了两个规范:runtime spec 和 image format spec。 有了这两个规范,不同组织和厂商开发的容器能够在不同的 runtime 上运行,保证了容器的可移植性和互操作性。

容器平台技术

容器核心技术使得容器能够在单个 host 上运行,而容器平台技术能够让容器作为集群在分布式环境中运行。容器平台技术包括容器编排引擎、容器管理平台和基于容器的 PaaS。下面将介绍这几块内容。

容器编排引擎

基于容器的应用一般会采用微服务架构。在这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过 API 对外提供服务。为了保证应用的高可用,每个组件都可能会运行多个相同的容器。这些容器会组成集群,集群中的容器会根据业务需要被动态地创建、迁移和销毁。
这样一个基于微服务架构的应用系统实际上是一个动态的可伸缩的系统。这对我们的部署环境提出了新的要求,我们需要有一种高效的方法来管理容器集群,这就是容器编排引擎要负责的工作。
所谓编排(orchestration),通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机地组合成微服务应用,以实现业务需求。

为什么使用Docker

Docker的应用场景

Docker提供轻量级的虚拟化服务。每个Docker容器都可以运行一个独立的应用。例如,用户可以将Java应用服务器Apache Tomcat运行在一个容器中,而MySQL数据库服务器运行在另外一个容器中。
目前,Docker的应用场景非常广泛,主要有以下几种。

  1. 简化配置
    这是Docker的初始目的。Docker将应用程序代码、运行环境以及配置进行打包。用户在部署时,只要以该镜像为模板创建容器即可。实际上,这实现了应用环境和底层环境的解耦。
  2. 简化部署过程
    Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,即可实现虚拟化。
    Docker改变了传统的虚拟化方式,使得开发者可以直接将自己开发的应用放入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数分钟就能完成。
  3. 节省开支
    另一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势。Docker与云计算机的结合,不仅解决了硬件管理的问题,也改变了虚拟化的方式。

Docker的广泛应用极大地降低了IT设施的运维成本。具体来说,主要体现在以下方面。

  • 轻量级的虚拟化。与传统的服务器或者主机虚拟化相比,Docker实现了更加轻量级的虚拟化。这对于应用部署来说,可以减少部署的时间成本和人力成本。
  • 标准化应用发布。Docker容器包含了运行环境和可执行程序,可以跨平台和主机使用。
  • 节约启动时间。传统的虚拟主机的启动一般是分钟级,而Docker容器启动是秒级。
  • 节约存储成本。以前一个虚拟机至少需要几个GB的磁盘空间,而Docker容器可以减少到MB级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265398.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习通【劳动通论】2023章节练习题

社会主义核心价值观24个字是:富强、民主、文明、和谐,自由、平等、公正、法治,爱国、敬业、诚信、友善。 1、“富强、民主、文明、和谐”,是我国社会主义现代化国家的建设目标,也是从价值目标层面对社会主义核心价值观…

【办公软件】Outlook启动一直显示“正在启动”的解决方法

早上打开电脑Outlook2016以后,半个多小时了,一直显示这个界面: 解决办法 按WIN R键打开“运行”,输入如下命令: outlook.exe /safe 然后点击“确定” 这样就进入了Outlook的安全模式。 点击“文件”->“选项”-…

CS106L2023 and CS106B 环境配置(详细教程)

1.问题: (1)CS106L 运行./setup.sh 脚本时出错 (windows 请下载git,在git bash 打开运行) (2)CS106B,QT构建 构建错误:一般构建错误,例如 Erro…

报错解决:ImportError: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.20 not found

问题描述 使用LAC(https://github.com/baidu/lac/blob/master/README.md)时,使用如下指令安装lac: pip install lac执行如下代码: from LAC import LAC报错: Error: Can not import paddle core while …

“我“的测试之路,从初级测试到测试开发,往后前景...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、测试工程师的现…

VS Code使用教程

链接远程服务器 https://blog.csdn.net/zhaxun/article/details/120568402 免密登陆服务器 1生成客户机(个人PC)密令 ssh-keygen -t rsa生成的文件在主目录的.ssh文件当中。 查看密令并复制到linux系统当中 cat id_rsa.pub 2复制到服务器中 echo …

程序启动时访问了未初始化的类指针引发内存访问违例导致程序崩溃的问题排查

目录 1、问题说明 2、使用Windbg动态调试去初步分析 3、使用Windbg详细分析 4、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门…

【WPF.NET开发】WPF中的窗口

目录 1、窗口类 2、实现窗口 2.1 为 MSBuild 配置窗口 3、窗口生存期 3.1 打开窗口 3.2 窗口激活 3.3 关闭窗口 3.4 窗口生存期事件 4、窗口位置 4.1 最顶层窗口和 z 顺序 5、窗口大小 6、大小调整属性的优先级顺序 7、窗口状态 8、窗口外观 8.1 重设大小模式 …

C#泛型(详解)

前言 介绍C# 入门经典第8版书中的第12章《泛型》 一、泛型的含义 为引出泛型的概念,我们先来看看我们前面提到的 集合类https://blog.csdn.net/qq_71897293/article/details/134684612?spm1001.2014.3001.5501 这些集合是没有具体类型化的,所以…

dockerfile:创建镜像的方式,船舰自定义的镜像

dockerfile:创建镜像的方式,船舰自定义的镜像 包括配置文件,挂载点,对外暴露的端口,设置环境变量 docker创建镜像的方式 1、基于已有镜像进行创建。 根据官方提供的镜像源,创建镜像,然后拉起…

安装Nacos2.2.3集群

目录 一、传统方式安装 二、Docker安装 一、传统方式安装 1、配置jdk环境 vi /etc/profile JAVA_HOME/usr/local/java JRE_HOME/usr/local/java/jre CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH$JAVA_HOME/bin:$PATH export PATH JAVA_…

Vue3: 给表格多个字段添加排序功能

问题 在Vue3项目中,使用element-plus的表格组件绘制表格后,需要令表格的多个字段可以进行选择排序(选择升序或者降序)但是排序功能好像有时候会出错,需要排序的字段多了之后,排序功能有时候会不起作用 解…