Docker学习路线1:介绍
Docker是什么?
Docker是一个开源平台,通过将应用程序隔离到轻量级、可移植的容器中,自动化应用程序的部署、扩展和管理。容器是独立的可执行单元,封装了运行应用程序所需的所有必要依赖项、库和配置文件,可以在各种环境中稳定地运行。
什么是容器?
容器是一种轻量级、可移植和隔离的软件环境,允许开发人员在不同平台上运行和打包应用程序及其依赖项。它们有助于简化应用程序的开发、部署和管理过程,同时确保应用程序在不同基础架构下始终运行一致。
容器是如何工作的?
与传统虚拟化不同,传统虚拟化会模拟一个完整的操作系统及其硬件资源,而容器共享主机的操作系统内核,并利用轻量级虚拟化技术创建隔离的进程。这种方法带来了几个好处,包括:
- 高效性:容器的开销较小,可以共享公共库和可执行文件,从而可以在单个主机上运行比虚拟机(VM)更多的容器。
- 可移植性:容器封装了应用程序及其依赖项,因此它们可以轻松地在不同的环境和平台上移动和运行。
- 快速启动:由于容器不需要启动完整的操作系统,因此它们的启动和关闭比VM快得多。
- 一致性:容器为应用程序的开发、测试和生产阶段提供了一致的环境,从而减少了“它在我的机器上可以运行”的问题。
容器和Docker
Docker是一种简化创建、部署和管理容器的平台。它为开发人员和管理员提供了一组工具和API,用于管理容器化的应用程序。使用Docker,您可以将应用程序代码、库和依赖项构建和打包成一个容器映像,该映像可以在支持Docker的任何环境中分发和一致地运行。
为什么我们需要容器?
容器的必要性
在软件开发和部署领域中,一致性和效率至关重要。在容器出现之前,开发人员在部署应用程序时经常面临各种挑战,包括:
- 不一致的环境: 开发人员通常在不同的环境中工作,这些环境可能与生产服务器具有不同的配置和库,导致部署应用程序时出现兼容性问题。
- 低效的资源利用: 虚拟机(VM)被广泛用于解决环境不一致性。然而,VM需要为每个应用程序运行整个操作系统,使资源利用效率低下。
- 缓慢的流程和可扩展性问题: 传统的部署方法具有较慢的上市时间和可扩展性困难,这阻碍了软件更新的快速交付。
容器如何解决这些挑战:
- 一致的环境: 容器通过将应用程序及其依赖项、配置和库捆绑到单个容器中来解决环境不一致性。这保证了应用程序在不同的环境中平稳运行。
- 高效的资源利用: 与VM不同,容器共享底层系统资源和操作系统内核,这使它们轻巧高效。容器旨在使用更少的资源并更快地启动,提高资源利用率。
- 更快的流程和可扩展性: 容器可以轻松地创建、销毁和替换,从而导致更快的开发和部署周期。随着可以部署多个容器而不消耗大量资源,应用程序的扩展变得更加容易。
总的来说,容器已成为组织快速应对市场变化、提高资源效率和确保可靠和一致的软件交付的重要工具。它们已经彻底改变了现代软件开发实践,并对部署和应用程序管理的世界产生了长远的影响。
裸机vs虚拟机vs容器
裸机、虚拟机和容器之间的区别如下:
裸机
裸机是指在硬件上直接运行的计算机,没有虚拟化。这是运行应用程序的最高效方式,但也是最不灵活的方式。每台服务器只能运行一个应用程序,并且不能轻松地将应用程序移动到另一台服务器上。
虚拟机
虚拟机(VM)是在单个服务器上运行多个应用程序的一种方式。每个VM运行在一个hypervisor上,这是一种模拟计算机硬件的软件。hypervisor允许您在单个服务器上运行多个操作系统,并提供不同VM上运行的应用程序之间的隔离。
容器
容器是一种在单个服务器上运行多个应用程序而不需要hypervisor开销的方法。每个容器在容器引擎上运行,这是一种模拟计算机操作系统的软件。容器引擎允许您在单个服务器上运行多个应用程序,并提供不同容器上运行的应用程序之间的隔离。
Docker和OCI
Open Container Initiative(OCI) 是Linux Foundation的一个项目,旨在创建容器格式和运行时的行业标准。其主要目标是通过定义技术规范来确保容器环境的兼容性和互操作性。
Docker在OCI中的作用
Docker 是OCI的创始成员之一,并在塑造容器格式和运行时的标准方面发挥了关键作用。 Docker最初开发了容器运行时(Docker Engine)和镜像格式(Docker Image),这些成为OCI规范的基础。
OCI规范
OCI有两个主要规范:
- 运行时规范(runtime-spec): 它定义通过隔离技术(如容器引擎)执行容器的规范。由Docker构建的容器运行时(称为'containerd')指导了OCI runtime-spec的开发。
- 镜像规范(image-spec): 它定义容器镜像格式,描述容器的内容,并可以由兼容的运行时运行。 Docker最初的镜像格式导致了OCI image-spec的创建。
Docker和OCI之间的兼容性
Docker仍致力于支持OCI规范,并自OCI参与以来不断更新其软件以符合OCI标准。 Docker的containerd运行时和镜像格式与OCI规范完全兼容,使得Docker容器可以在其他OCI兼容的容器运行时上运行,反之亦然。
总之,Docker和Open Container Initiative共同维护容器行业的标准化和兼容性。 Docker在OCI规范的制定中扮演了重要角色,确保容器生态系统保持健康,互操作性强,并且可在行业内广泛的用户和平台上使用。
最后
为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:
公众号 Let us Coding
,牛客,知乎,开源中国,CSDN,思否,掘金,InfoQ,简书,博客园,慕课,51CTO,helloworld,腾讯开发者社区,阿里开发者社区
看完如果觉得有帮助,欢迎点赞、收藏和关注
Docker学习路线1:介绍的更多相关文章
- 优秀的云计算工程师需要学什么?云计算Docker学习路线
云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...
- docker 学习路线
docker 学习路线 参考资料 知乎 docker 的学习路线 Docker - 从入门到实践 Docker 核心技术与实现原理 Docker 入门 <Kubernetes in Action ...
- docker学习笔记(一)--介绍和基本组成
Docker基本介绍 1.什么是docker docker本身不是容器,是创建容器的工具,是应用容器引擎,将应用程序自动部署到容器的开源引擎. 2.docker的目标特点 简单轻量,快速开发,具备可移 ...
- DOCKER学习_017:Docker-Compose介绍
dockers三驾马车 Docker Machine Docker Swarm Docker Compose 一 Docker Compose介绍 Docker Compose是一个定义和运行多容器应 ...
- docker学习路线
http://www.simapple.com/320.html DOCKER 官网 :https://docs.docker.com/docker-for-mac/
- Docker学习总结之Run命令介绍
Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...
- Docker学习(三): Dockerfile指令介绍
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- [Docker]学习笔记--简单介绍
学习docker已经有一段时间了,一直没有静下心来好好总结一下. 最近用docker搭了一整套Gitlab的持续集成环境.(会在下一篇中详细的讲解具体步骤,敬请期待) 感觉是时候写点东西和大家一起分享 ...
- 「Docker学习系列教程」9-Docker容器数据卷介绍
通过前面8篇文章的学习,我们已经学会了docker的安装.docker常用的命令已经docker镜像修改后提交的远程镜像仓库及提交到公司的私服仓库中.接下来,我们再来学学Docker另外一个重要的东西 ...
- Spring Cloud学习路线
学习本学习路线学习完,大家将会对微服务.Spring Cloud.Docker.Kubernetes有一个系统.全面的认识.通过学习,将能掌握相关的知识体系,并能够投入到项目实战中去. 本学习路线采用 ...
随机推荐
- Gitlab 16.9.0 用Access Token注册Gitlab Runner
升级到当前最新版Gitlab之后 在"管理中心"的"CI/CD"--"Runners"下,提示以前的那种注册令牌的方式已经过时了. 点击右上 ...
- 【Azure 媒体服务】Azure Media Service Explorer 5.4.3.0 不能连接Media Service, 错误消息提示 BadRequest 和 Forbidden
问题描述 Azure Media Service Explorer 5.4.3.0 不能连接Media Service, 错误消息提示 BadRequest 和 Forbidden. 截图如下: Ba ...
- 通过keil内置标准库创建stm32工程
通过keil内置标准库创建stm32工程.md body { font-family: var(--vscode-markdown-font-family, -apple-system, BlinkM ...
- C++ //类模板与函数模板的区别 //1.类模板没有自动类型推导的使用方式 //2.类模板子模板参数中可以有默认参数
1 //类模板与函数模板的区别 2 //1.类模板没有自动类型推导的使用方式 3 //2.类模板子模板参数中可以有默认参数 4 5 #include <iostream> 6 #inclu ...
- C++函数模板总结:
//C++提高编程 模板(泛型编程 STL)//模板不可以直接使用 它只是一个框架//模板的通用并不是万能的//语法//template<typename T>//函数模板两种方式//1. ...
- 来也科技收购Mindsay背后:新旧势力交锋智能自动化备受关注
来也科技收购Mindsay背后:新旧势力交锋智能自动化备受关注 来也科技收购Mindsay背后:历程一波三折,意义非同寻常 来也科技收购Mindsay,国产RPA正式进军国际市场 收购Mindsay来 ...
- powershell配置自动补全
powershell配置自动补全 一.需求: 看到老师上课用mac命令行有自动补全功能,发现真的爽.但是自己的windows powershell不能使用自动补全功能.有了需求,就想找到能完成目前的任 ...
- C++ 派生类对象的构造与析构过程
C++ 派生类对象的构造与析构过程 因为基类的成员变量和派生类的成员变量在内存中的连续的(下面程序会验证这一点),如下图所示: 所以构造派生类对象的时候,构造成员变量的过程就像入栈一样: 那么很自然, ...
- 假期做了一项调研:大厂为啥都自研RPC?结果合乎情理!
大家好,我是冰河~~ 五一假期过的可真快,今天开始,又要搬砖了.在五一假期当中,冰河做了一项调研,感觉结果还是挺合乎情理的. 翻看招聘信息 先来看我在某招聘网站上随便搜索了下Java招聘的岗位,看到的 ...
- FPGA中的速度优化
FPGA中的速度优化 一.逻辑设计中的速度概念 逻辑设计速度相关的概念有三个:设计吞吐量.设计延时和设计时序.速度优化策略而言,吞吐量需要提高,延时应该降低,时序应该收敛(时序余量slave越大,收敛 ...