云原生系列六:容器和Docker

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ​最近云原生领域热火朝天,那么云原生是什么?何为云原生?云原生用来干什么的?今天学长带领大家走进云原生时代~~何为云?技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。叶秋学长理解的云原生就是用来降本增效的,如下图:云原生的应用程序是什么?叶秋学长认为符合云原生架构的应用程序应该是:采用

最近云原生领域热火朝天,那么云原生是什么?何为云原生?云原生用来干什么的?今天学长带领大家走进云原生时代~~

何为云?

技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。叶秋学长理解的云原生就是用来降本增效的,如下图:

image.gif编辑

云原生的应用程序是什么?

叶秋学长认为符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

容器和Docker是什么?

虚拟化与容器

在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表是VMware和OpenStack。很多人都用过虚拟机,就是在操作系统里安装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。在“子电脑”里,可以和正常电脑一样运行程序,例如微信、Word。“子电脑”和“子电脑”之间,相互隔离互不影响。

虚拟机虽然可以隔离出很多“子电脑”,但占用空间大,启动慢,虚拟机软件可能还要花钱(例如VMware)。而容器技术恰好没有这些缺点,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”),启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。虚拟机和以Docker为代表的容器都是虚拟化技术,不过容器属于轻量级的虚拟化。下面是两者的主要对比。

image.gif编辑

Docker的源起

我们再来看看Docker,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。虽然Docker 把容器技术推向了巅峰,但容器技术却不是Docker发明的。实际上,容器技术连新技术都算不上,因为它的诞生和使用有些年头了,像最早的容器LXC发布于2008年。Docker本来是做PaaS的公司,原来叫做DotCloud,成立于2010年。但比起Pivotal、Red Hat等著名企业,DotCloud运营并不成功。眼看就要失败的时候,2013年DotCloud决定开源自己的容器项目Docker。但是短短几个月,Docker迅速崛起,吸引大量的开发者使用。随着Docker在开发者中越来越流行,2013年10月,DotCloud公司正式更名为Docker,2014年8月,Docker 宣布把PaaS业务出售,开始专心致志做Docker。Docker一词意为码头工人,而它的logo则是一个托着许多集装箱的鲸鱼,非常形象:Docker是鲸鱼,而集装箱则是一个个的容器。在Docker的官网上,对于容器有一个一句话的解释“A standardized unit of software”,即“软件的一个标准化单元”。

Docker的核心概念

Docker技术的三大核心概念,分别是:

• 镜像(Image)

• 容器(Container)

• 仓库(Repository)

上面的例子里,设计出来的模板就是Docker镜像,生产(复制)出来的构件就是Docker容器,而Docker仓库则是集中放置管理Docker镜像的地方。

Docker镜像是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

每一种模板(镜像)能够创建出一种构件,但是模板可以由不同的设计师来设计,提供不同用途、不同风格,例如斜顶式阳台、嵌入式阳台、包豪斯风格、蒙德里安风格等等,所有人相互之间可以共享,这就形成了大的公共仓库。

Docker官方提供了Docker Hub来维护管理所有的镜像,只是对于免费用户而言,只能创建一个私有仓库。Docker Hub里提供了大量高质量的官方镜像,例如Oracle、MySQL、redis、Ubuntu、Nginx、python、Docker(Docker in Docker!)等等,开发人员需要一个环境的时候,可以直接到Docker镜像仓库去查找,减少了大量无谓的环境安装工作。

Docker的好处

Docker给我们带来的好处非常多,下面简单列举几点:

• 更高效的利用系统资源

有了Docker,我们可以在一台服务器上运行很多应用,充分利用硬件资源。例如现在我们有一台Linux服务器,可以构建不同版本的Ubuntu镜像启动,并且为不同的用户分配不同的容器。这样用一台服务器就能虚拟出许多运行不同操作系统的虚拟服务器,而对于用户来说,这些都是透明的。许多公有云采用了容器技术为用户提供服务,所以虚拟化与容器共同成为了现代云计算的基石。

• 更快速的启动时间

传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接运行于宿主内核,无须启动完整的操作系统,因此可以做到秒级甚至毫秒级的启动时间,大大的节约了开发、测试、部署的时间。

• 保证环境一致性

开发过程中常见的问题之一是环境一致性问题,由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现,而Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,再也不会有在线下开发环境中运行正常,而部署到线上有各种错误的情况了。

• 持续交付和部署

对于开发和运维人员来说,最希望的是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码,无论在多少台服务器中部署都是如此。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见。

• 更轻松的迁移

由于Docker确保了执行环境的一致性,使得应用的迁移更加容易,Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,其运行结果是一致的,因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

• 提升复用性,降低耦合性,维护和扩展更轻松

Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。安装Docker后,我们可以从Docker Hub上获取各种各样的操作系统镜像,这个操作很简单,只需要拉取相应的镜像到本地然后运行即可。另外我们可以将数据库、Web服务器、缓存服务器运行在不同的容器中,降低了各个服务之间的耦合性、便于扩展,Docker Hub上有各种各样的优秀镜像,我们可以直接拿来使用,不需要自己搭建,应用的部署就像搭积木一样简单。

• 实现沙盒机制,提高了安全性

由于应用运行在容器中,与操作系统隔离开,从而使操作系统基本不可能受到破坏。另外如果应用因为攻击而瘫痪,并不需要重启服务器,直接重启容器或者再启动一个镜像就可以了。

容器与微服务

容器是微服务和云原生架构的最佳实现载体。微服务与容器几乎是完美的搭配。单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型,每个专能型分配一个隔离的容器,赋予了最大程度的灵活。

image.gif编辑

本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~~

相关文章
|
10天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
158 93
|
13天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
85 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
24天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
112 35
|
11天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
40 17
|
23天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
12天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
74 12
|
13天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
77 11
|
29天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
138 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
21天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
19天前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。