首页 > 其他分享 >Docker学习路线1:介绍

Docker学习路线1:介绍

时间:2023-07-09 19:56:01浏览次数:57  
标签:OCI 学习 容器 VM 应用程序 路线 Docker 运行

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简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

标签:OCI,学习,容器,VM,应用程序,路线,Docker,运行
From: https://www.cnblogs.com/xiaowange/p/17539259.html

相关文章

  • 【学习笔记】李超线段树
    维护一次函数以模板题为例。使用线段树维护线段,每个节点维护的都是完全覆盖这个区间的线段。考虑当前节点已经有线段\(f\),现在加入线段\(g\)。暴力想法是暴力递归每个子区间,把更优的保留,注意到\(f,g\)最多一个交点,因此也最多一侧的子区间需要暴力递归。具体流程如下:先......
  • Cesium学习笔记3——加载地图服务
    申请成为天地图开发者,创建应用 编写代码:<!DOCTYPEhtml><htmllang="en"><head><!--Usecorrectcharacterset.--><metacharset="utf-8"/><!--TellIEtousethelatest,bestversion.--><......
  • 数学分析学习笔记
    序言数学分析原理1、叙述上的系统性和可能范围内的严格性叙述按照逻辑的顺序2、数学分析是行动的指南做习题和例题的重要性3、数学分析与其它应用领域的联系4、分析计算一直算到求出数字的结果,学生要熟悉近似方法的运用与学会作出近似公式5、......
  • Visio如何绘制技术路线图、方法流程图?
      本文介绍基于Visio软件绘制技术路线图、流程图、工作步骤图等的方法。  首先打开Visio。我们可以直接选择“基本框图”进行绘制。  也可以选用一些模板。  本次我们就以“流程图”为例来绘制。  因为要绘制论文的技术路线图,因此各种形状简约即可,我们就选择“基......
  • docker 常用记录2023
    IDEA连接虚拟机(Ubuntu)的docker的最好办法(开放2375端口号).我这里用的Ubuntu,1、打开终端输入"sudovim/lib/systemd/system/docker.service"2.在sock后面,添加-Htcp://0.0.0.0:2375如上图所示.按下键盘Esc键输入wq保存退出.3.然后输入systemctldaemon-reload,重新加......
  • docker中测试Address Sanitizer
    原文地址:https://www.cnblogs.com/liqinglucky/p/address-sanitizer-in-docker.htmlDocker只是提供了一个运行环境,Docker里的程序集成AddressSanitizer与Linux环境编译相比并不需要做任何额外改动。源代码:liqinglucky/DockerHelloWorld-码云-开源中国(gitee.com)一、代码......
  • [学习笔记] 启发式合并 & DSU on Tree
    一、启发式合并启发式合并多用于合并两个集合,现在有这样一个问题:现在给定\(n\)个集合,第\(i\)个集合初始只有\(\{i\}\),要支持集合的合并操作。如果我们暴力合并,时间复杂度会是\(O(n^2)\)的。参考并查集的按秩合并,考虑将小的集合合并到大的集合上。考虑计算时间复杂度,容......
  • ubuntu18.04 搭建docker 环境
    1.安装docker环境1.1安装docker容器sudoaptinstalldocker.iosudosystemctlstatusdocke#获取docker状态sudosystemctlstartdocker#启动dockersudosystemctlstopdocker#停止docker1.2将添加docker用户组(重启生效)sudogroupadddockersudogpasswd......
  • 《Generative Agents: Interactive Simulacra of Human Behavior》论文学习
    一、论文基本思想Figure1:Generativeagentscreatebelievablesimulacraofhumanbehaviorforinteractiveapplications.Inthiswork,wedemonstrategenerativeagentsbypopulatingasandboxenvironment,reminiscentofTheSims,withtwenty-fiveagents.Use......
  • Docker容器 命令
     查看容器状态 正在运行的容器dockerps 查看所有容器dockerps-a 启动容器  1、直接运行,这种会铺满窗口,并且不能其它操作,按ctrl+c终止进程dockerruntomcat 2、后台运行  -p 后面两个8080,第一个8080为对外访问端口,第......