热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker多物理机容器_Docker(1)什么是Docker

​1|0学习Docker前的必备知识1|1环境配置的烦恼软件开发最大的麻烦事之一,就是环境配置相信每位编程初学者都会在环境配置上倒腾很久,而作为老师也会

​1|0学习 Docker 前的必备知识

1|1环境配置的烦恼

  • 软件开发最大的麻烦事之一,就是环境配置
  • 相信每位编程初学者都会在环境配置上倒腾很久,而作为老师也会因为不同机器出现五花八门的环境配置问题而烦恼
  • 想要软件正常运行,那么系统的设置和各种库、组件正确的安装才能如期运行
  • 举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量
  • 当你需要换机器的时候,你之前所配置的环境又要重头来一遍,非常麻烦

1|2很久以前的应用部署方式

介绍

025d379af972bb05ab4b603859505aa8.png

在一个物理服务器上面安装系统,直接部署应用

缺点

  • 部署非常慢
  • 成本非常高
  • 资源浪费:部署的应用并不会占满服务器资源,会有大部分的空闲资源
  • 难于迁移和扩展:像上面说到的,换台服务器,环境又要重新配
  • 可能会被限定硬件厂商:底层系统架构不同

1|3虚拟化技术出现后的应用部署方式

虚拟化介绍

96694f2240b5f625ab488f1942e42851.png
  • 一个主机部署多个虚拟机,每个虚拟机可以部署多个应用
  • 比如在 Windows 系统里面运行 Linux 系统的 VM
  • 对于底层系统(主机)来说,虚拟机就是一个普通文件,不需要就删掉,对主机没有影响

虚拟化优点

  • 资源池:一个物理机的资源分配到了不同的虚拟机
  • 易扩展:添加物理主机或虚拟机
  • 易云化:阿里云、AWS 提供虚拟化技术

虚拟化局限性

  • 资源占用多:每一个虚拟机都是一个完整的操作系统,要给其分配资源,当虚拟机数量增多时,物理主机本身消耗的资源势必增多
  • 冗余步骤多:虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录
  • 启动慢:启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行

2|0容器的基础知识

2|1容器为什么会出现

  • 上面也讲述了单机部署应用和虚拟机技术的局限性
  • 容器的诞生就是为了解决这些局限性的

2|2什么是容器

  • 对应用软件和其依赖的包进行标准化打包
  • 应用之间相互隔离
  • 共享同一个 OSKernel
  • 可以运行在很多主流操作系统上
  • 可以理解成:标准化软件单元

2|3容器解决了什么问题 

  • 解决了开发和运维之间的矛盾
  • 在开发和运维之间搭建了一个桥梁,是实现 devops 的最佳解决方案

2|4容器和虚拟机的区别

b0f98eb98259219c0860b8016c3bfd3f.png

容器和虚拟机都具有相似的资源隔离和分配特点,但是功能不同,因为容器虚拟化了操作系统,而不是硬件,所以更加便携和高效

9fe5c17b196f33a17ceeab397dfcbd2b.png

2|5虚拟化 + 容器

  • 其实就是 一台物理机上部署多个 VM,每个 VM 上又可以有多个容器
  • 容器和 VM 一起结合使用,在部署和管理应用程序时提供了很大的灵活性
d6454ef9dc553dd0cb6c7655a0376458.png

3|0Docker 的详细介绍

3|1Docker 简介

  • Docker 是一个开源的应用容器引擎,基于 Go 语言
  • 可以打包应用以及依赖包到一 个轻量级、可移植的容器中
  • Docker 打包好了的容器,可以发布到任何流行的 Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(独立)
  • 容器性能开销极低
  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器
  • Docker 是实现容器技术的一种工具
  • Docker 容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

工作中的应用场景

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布(我们的重点)
  • 组建微服务架构,通过多个容器,一台机器可以跑多个服务,因此在本机可以模拟出微服务架构

3|2将软件打包到容器中,以进行开发,运输和部署

  • 容器是打包代码及其所有依赖项的软件的标准单元,所以该软件可以从一个计算机环境快速可靠地在另一个计算机环境进行运行
  • Docker 容器镜像是一个轻量级、独立的、可执行的软件包,它包含运行应用程序所需的一切:运行环境、系统工具、系统库、配置
  • 容器镜像在运行时成为容器
  • 容器化软件都可用于基于 Linux 和 Windows 的应用程序,始终运行相同
  • 容器将软件与其环境隔离开来,即使存在差异,但软件仍然可以运行

3|3在 Docker 镜像上运行的 Docker 容器的优势

  • 标准:Docker 创建了容器的行业标准,因此它们可以在任何地方移植
  • 轻巧:容器共享机器的操作系统内核,因此不需要每个应用程序都用操作系统,从而提高了服务器效率,并降低了服务器资源的消耗
  • 安全:容器中的应用程序更安全,Docker 提供业界最强大的默认隔离功能

3|4Docker 架构

27f9e329bae06fa57eb852a542254516.png

架构图箭头的意思大概是

  • 在 Docker Client 敲 Docker 命令调用 Docker API 来操作 Host 上的 Docker 服务
  • Docker 服务可以从仓库拉镜像到本机,也可以用本机镜像创建一个容器并运行

仓库(Registry)

  • 集中存放镜像文件的场所
  • 每个镜像文件有不同的标签(不同的版本)
  • 最大的开放仓库是Docker Hub: https://hub.docker.com/ 存放了数量庞大的镜像供用户下载
  • 国内的公开仓库包括阿里云,网易云等
  • 仓库分为公开仓库(public)和私有仓库(private)两种形式

镜像(Images)

  • 创建容器的模板
  • 一个镜像可以创建很多容器

容器(Containers)

  • 容器是镜像生成的运行实例
  • Docker 利用容器独立运行一个或一组应用(服务)
  • 每个容器之间是相互隔离的
  • 它可以被启用、开始、停止、删除

主机(HOST)

  • 一个物理机或虚拟机
  • 用于运行 Docker 守护进程和多个容器
  • 可存放多个镜像
  • 也称为宿主机,node节点

Docker 守护程序(daemon)

  • 监听 Docker API 请求
  • 也会管理 Docker 对象,如:镜像、容器、网络、卷
  • 守护程序还可以与其他守护程序通信以管理 Docker 服务

Docker 客户端(client)

  • 客户端使用 Docker 命令或其他工具调用 Docker API
  • 当然也可以在 HOST 直接敲 Docker 命令
  • 客户端可以与多个 Docker 守护程序通信

官方介绍文档:https://docs.docker.com/get-started/overview/

本文转载自:https://www.cnblogs.com/poloyy/p/13898977.html



推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
author-avatar
李波2602884584
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有