《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下

news/2025/1/9 23:00:24/文章来源:https://www.cnblogs.com/bigcat26/p/18663052

@

目录
  • 1.Docker简介
    • 1.1Docker是什么
      • 1.1.1问题:为什么会有docker出现?
      • 1.1.2Docker理念
      • 1.1.3一句话
    • 1.2容器与虚拟机比较
      • 1.2.1容器发展简史
      • 1.2.2传统虚拟机技术
      • 1.2.3容器虚拟化技术
      • 1.2.4对比
    • 1.3能干嘛
      • 1.3.1技术职级变化
      • 1.3.2开发/运维(DevOps)新一代开发工程师
      • 1.3.3哪些企业在使用
    • 1.4去哪下
  • 本人其他相关文章链接

1.Docker简介

1.1Docker是什么

1.1.1问题:为什么会有docker出现?

假定您在开发一个尚硅谷的谷粒商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。

问题:请问您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?

答案:就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术

环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题

之前在服务器配置一个应用的运行环境,要安装各种软件,就拿尚硅谷电商项目的环境来说,Java/RabbitMQ/MySQL/JDBC驱动包等。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。

传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。Docker的出现使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

1.1.2Docker理念

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

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

1.1.3一句话

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

1.2容器与虚拟机比较

1.2.1容器发展简史


1.2.2传统虚拟机技术


1.2.3容器虚拟化技术



1.2.4对比

1.3能干嘛

1.3.1技术职级变化

coder -> programmer -> software engineer -> DevOps engineer

1.3.2开发/运维(DevOps)新一代开发工程师

1)一次构建、随处运行

更快速的应用交付和部署

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

更便捷的升级和扩缩容
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。

更简单的系统运维
应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。

更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

2)Docker应用场景

1.3.3哪些企业在使用

新浪


美团

蘑菇街

1.4去哪下

官网:docker官网:http://www.docker.com
仓库:Docker Hub官网:https://hub.docker.com/

本人其他相关文章链接

1.《docker基础篇:1.Docker简介》包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
2.《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
3.《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
4.《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
5.《docker基础篇:5.本地镜像发布到阿里云》
6.《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
7.《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更干嘛、数据卷案例
8.《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis

重要信息

  • 官网:https://ais.cn/u/vEbMBz



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

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

相关文章

redis的zset | 跳表

redis的zset有两种数据结构:跳表和压缩列表 压缩列表除了一般元素外还包括列表长度、列表元素个数、尾部偏移量、列表结束标识等。在zset的长度较小的时候,用这个比较好 什么是跳表 跳表是在链表的基础上,增加了多层索引,利用多级索引的跳转快速实现查询。每次新增一个节点…

Python Matplotlib 教程- Matplotlib 如何进行数据点标记

Python Matplotlib 数据点标记 在数据可视化中,数据点标记是非常重要的部分。无论是绘制折线图、散点图还是柱状图,清晰地标记关键数据点可以帮助观众快速理解图表的核心信息。本篇文章将详细介绍如何在 Python 的 Matplotlib 中实现数据点标记,从基础使用到高级自定义,帮助…

P1803 凌乱的yyy / 线段覆盖

P1803 凌乱的yyy / 线段覆盖 题目 现在各大 oj 上有 \(n\) 个比赛,每个比赛的开始、结束的时间点是知道的。 yyy 认为,参加越多的比赛,noip 就能考的越好(假的)。 所以,他想知道他最多能参加几个比赛。 由于 yyy 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参…

P1325 雷达安装

P1325 雷达安装 题目 假设海岸线是一条无限延伸的直线。它的一侧是陆地,另一侧是海洋。每一座小岛是在海面上的一个点。雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围 \(d\)。你的任务是建立尽量少的雷达站,使所有小岛都在扫描范围之内。 数据使用笛卡…

第4章 类型设计准则

第4章 类型设计准则​DO​:类应该由一组定义明确、相互关联的成员组成。 一个类,如果能用一句话描述清楚它的用途,那么它的设计是优秀的。1 类型(class、struct)和 namespace​DO​:namespace 用于组织类,通过 namespace 将相关功能按层次铺开,但不要有过深的层次、过多…

BurpSuite实操之代理功能

一、代理原理Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。通过拦截,Burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。在日常工作中,我们最常用的web客…

window11安装安卓子系统,畅玩安卓软件

在Windows 11刚推出时,微软便宣称该操作系统中可以直接安装运行安卓APK应用程序,如同Android虚拟机一样,不过是要实现这一功能,我们必须在Windows 11中单独安装Windows 11安卓子系统,这里说明一下其标准的名称为:适用于 Android™️ 的 Windows 子系统(Windows Subsyste…

Python + Appium 自动化操作微信入门(超详细)

Appium是一个开源的自动化测试工具,支持 Android、iOS 平台上的原生应用,支持 Java、Python、PHP 等多种语言。Appium是一个开源的自动化测试工具,支持 Android、iOS 平台上的原生应用,支持 Java、Python、PHP 等多种语言。 Appium 封装了 Selenium,能够为用户提供所有常见…

浅谈STC单片机看门狗的作用和使用成都控制器开发

有的控制器的运行环境是很复杂的,比如可能突然来个电压,突然来个浪涌,周围存在的强电磁场也可能交替对控制器造成冲击,也有可能外部器件出现错误很久不响应,这样就有可能让单片机的程序跑飞,或者进入死循环出不来,那这就完蛋了。怎么办呢? 一个简单的办法就是使用单片机…

【云计算】银行数据中心私有云平台2.0建设(来自真实案例,很有启发性)

【导读】某行数据中心私有云平台一期建设后投入使用。但在使用过程中遇到了诸多实际问题:审批流程不贴合实际情况、自动化程度较低、云平台无法与CMDB联动、裸金属纳管等。本文对问题根源进行了探讨,并分享了通过对资源管理模式、审批流程、资源部署、微服务部署等方面进行优…

markdown学习记录

markdown学习 标题 标题用“#” 字体 这是加粗(两个星号) 这是倾斜(一个星号) 加粗+倾斜(三个星号) 这是删除线 (两个~~) 引用大于号是引用分割线(“---”或“***”) 插入图片 !+[名称]+(URL)超链接 [地址名]+(网址) 我的博客地址 列表 有序用数字,无序用“-”号A…

【实用技巧】【探讨】Java 中比较两个对象的差异

1 前言 大家平时写业务代码的时候,应该能感知到哪些是基础配置数据,哪些是实例数据。比如营销里的活动信息、促销信息就属于配置型数据,基于活动带来的订单参与活动信息属于实例数据。比如一些规则信息、流程信息等类似一种版本的概念。那么版本跟版本之间的差异、以及创建…