(一)Docker基本介绍

部署项目的发展

  • 传统部署适合需要最大性能和可靠性的场景,但在资源利用和管理方面有显著劣势。
  • 虚拟化部署提供了良好的资源利用率和隔离性,适用于需要灵活扩展和多租户环境的场景,但存在性能开销。
  • 容器部署在轻量级、可移植性和资源利用率方面表现优异,特别适合现代微服务架构和 DevOps 流程,但需要处理隔离性和安全性挑战。

选择适合的部署方式取决于具体的应用需求、性能要求、资源管理和安全考虑。

了解了项目部署的方式,接下来就开始学习当下最热门的容器技术的工具Docker


Docker 容器和传统虚拟机有区别

物理服务器

物理服务器是一种实体的、有形的计算机硬件设备,通常被安置在数据中心或服务器机房中。物理服务器是构建IT基础设施的基石,为各种云服务、虚拟化平台和大型应用提供了必要的计算资源。随着云计算和虚拟化技术的发展,许多企业选择将部分或全部工作负载迁移到云平台,但物理服务器仍然在某些特定场景下扮演着不可替代的角色,特别是在需要高性能、高安全性或特定硬件支持的情况下。

物理服务器与云服务器是虚拟化的关系

  • 物理服务器可以作为虚拟化的宿主机,运行多个虚拟机
  • 通过虚拟化技术,一台物理服务器可以被划分为多个虚拟服务器(如VPS)

VPS  vs   ECS

VPS (Virtual Private Server):

  • VPS 是在物理服务器上通过虚拟化技术创建的虚拟服务器。
  • 每个 VPS 都有独立的操作系统、存储和资源配置。
  • VPS 通常由主机服务提供商管理,用户拥有 root 访问权限。

但是VPS有个缺点,不支持自主升降级,不易动态调整,所以有了ECS

ECS (Elastic Compute Service):

  • ECS 是云服务提供商(如阿里云、亚马逊 AWS)提供的弹性计算服务。阿里的叫ECS,AWS的叫EC2
  • 它是一种虚拟化的计算资源,可以根据需求快速扩展或缩减。
  • ECS 实例通常运行在物理服务器上,但用户只需关注自己的虚拟机实例。

但是我们的服务器可能是不同的操作系统,部署应用会有各种的环境依赖问题,所以可以使用虚拟机将环境 + 应用打包

但是这种方法还是太笨重了,所以接下来引入了docker

Docker 是什么?

Docker 是一种开源平台,旨在简化应用程序的开发、部署和运行。通过使用容器技术,Docker 将应用程序及其依赖项打包到一个轻量级、独立的容器中,从而确保在任何环境中都能一致地运行。

docker源码

dockers官网

Namespace 提供了进程隔离,使得容器中的进程看到的系统资源是独立的,与其他容器或主机系统隔离。

Cgroup 用于限制、记录和隔离进程组使用的物理资源(CPU、内存、磁盘 I/O 等)

Docker 的主要特点

  1. 轻量级:Docker 容器共享主机操作系统的内核,与传统虚拟机相比,更加轻量级,启动速度更快,资源开销更小。

  2. 一致性和可移植性:Docker 容器包含应用程序及其所有依赖项,确保在不同环境(开发、测试、生产)中的一致运行,从而提高应用程序的可移植性。

  3. 隔离性:Docker 提供了进程级的隔离,每个容器都有自己独立的文件系统、网络和进程空间,确保应用程序之间的相互隔离。

  4. 高效资源利用:Docker 容器共享主机的操作系统内核,可以在同一主机上运行更多的容器,从而提高资源利用率。

  5. 易于集成和扩展:Docker 可以与持续集成和持续部署(CI/CD)工具无缝集成,支持快速开发、测试和部署应用程序。此外,Docker 生态系统中的 Docker Compose 和 Docker Swarm 等工具,使得管理和编排多个容器变得更加简单。


Docker 的基本组件

Docker Engine

  • Docker 的核心组件,包括 Docker 守护进程(daemon)和 Docker CLI(命令行接口)。Docker 守护进程负责构建、运行和管理容器,Docker CLI 提供与守护进程交互的命令行工具。

Docker Image

  • Docker 镜像是一个只读的模板,用于创建容器。它包含了运行应用程序所需的所有内容,包括代码、运行时、库和配置文件。镜像可以从公共或私有的 Docker 仓库(如 Docker Hub)中获取。

Docker Container

  • Docker 容器是镜像的一个运行实例。容器是独立、可执行的软件包,包含了运行应用程序所需的所有内容。它们可以快速启动和停止,并在不同的环境中一致地运行。

Docker Repository

  • Docker 仓库用于存储和分发 Docker 镜像。Docker Hub 是一个公共仓库,提供大量的官方和社区构建的镜像。用户也可以创建自己的私有仓库来存储自定义镜像。

Docker daemon

  • Docker daemon 监听 Docker API 请求并管理 Docker 对象,如镜像、容器、网络和数据卷。守护进程还可以与其他守护进程通信以管理 Docker 服务。

Docker client

  • 是许多 Docker 用户与 Docker 交互的主要方式。当你使用 docker run 等命令时,客户端将这些命令发送给 dockerd 执行。Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器,并且可以与多个守护进程通信。

Docker Host

  • 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Desktop

  • Docker Desktop 是一个适用于 Mac 和 Windows 环境的易于安装的应用程序,使你能够构建和共享容器化的应用程序和微服务。Docker Desktop 包含 Docker 守护进程(dockerd)、Docker 客户端(docker)、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。

Docker Container 生命周期

Docker Container 生命周期,由以下五个状态组成

  1. Created state
  2. Running state
  3. Paused state/unpaused state
  4. Stopped state
  5. Killed/Deleted state

1. Created state

docker create --name <name-of-container> <docker-image-name>

2. Running state

在运行状态下,Docker 容器开始执行镜像中提到的命令。要运行 Docker 容器,请使用 docker run 命令。

docker run <container-id>
or
docker run <container-name>

docker run 命令会创建一个容器(如果该容器不存在)。在这种情况下,可以跳过创建容器的步骤。

3. Paused state/unpaused state

在暂停状态下,Docker 容器中当前执行的命令被暂停。使用 docker pause 命令来暂停正在运行的容器。

docker pause container <container-id or container-name>

注意:docker pause 会暂停容器中的所有进程。它发送 SIGSTOP 信号来暂停容器中的进程。

在取消暂停状态下,被暂停的容器一旦取消暂停就会恢复执行命令。 使用 docker unpause 命令来恢复暂停的容器。 然后,Docker 发送 SIGCONT 信号来恢复进程。

docker unpause <container-id or container-name>

4. Stopped state

在停止状态下,容器的主进程被优雅地关闭。Docker 发送 SIGTERM 信号进行优雅关闭,如果需要,会发送 SIGKILL 信号来终止容器的主进程。使用 docker stop 命令来停止容器。

docker stop <container-id or container-name>

重启 Docker 容器相当于执行 docker stop,然后执行 docker run,即停止和运行阶段。

5. Killed/Deleted state

在终止状态下,容器的主进程被突然关闭。Docker 发送 SIGKILL 信号来终止容器的主进程。

docker kill <container-id or container-name>

到此docker 容器的生命结束

参考

Docker Architecture, Life Cycle of Docker Containers and Data Management - DEV Community

docker容器和传统虚拟机有什么区别?_哔哩哔哩_bilibili

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

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

相关文章

适合金融行业的国产传输软件应该是怎样的?

对于金融行业来说&#xff0c;正常业务开展离不开文件传输场景&#xff0c;一般来说&#xff0c;金融行业常用的文件传输工具有IM通讯、邮件、自建文件传输系统、FTP应用、U盘等&#xff0c;这些传输工具可以基础实现金融机构的文件传输需求&#xff0c;但也存在如下问题&#…

google 邮件信息收集

主要介绍通过google和fofax对目标进行邮件信息收集 chrome插件 email-whatsapp-extractor link-klipper-extract-all bulk-url-opener-extension email-whatsapp-extractor 使用正则表达式&#xff0c;获取访问页面内所有的email邮箱和whatsapp号码&#xff0c;以表格的形式导…

el-table封装点击列筛选行数据功能,支持筛选,搜索,排序功能

数据少的话&#xff0c;可以前端实现&#xff0c;如果多的话&#xff0c;建议还是请求接口比较合理父组件&#xff1a; <template> <div class"home"> <!-- <img alt"Vue logo" src"../assets/logo.png"> <HelloWorld …

Hilbert编码 思路和scala 代码

需求&#xff1a; 使用Hilbert 曲线对遥感影像瓦片数据进行编码&#xff0c;获取某个区域的编码值即可 Hilbert 曲线编码方式 思路 大致可以对四个方向的数据进行归类 左下左上右上右下 这个也对应着编码的顺序 思考在不同Hilbert深度&#xff08;阶&#xff09;情况下的…

【fastadmin开发实战】经营数据自动识别录入

项目场景描述&#xff1a;每日录入各个门店的员工经营数据&#xff0c;直接从微信复制报数、系统识别录入。 解决方案&#xff1a;各个门店按照固定的汇报模板进行汇报&#xff08;如福田店有员工1、2、3、4、5号员工&#xff0c;每个员工按模板报数&#xff09; 例如&#xf…

JMH320【亲测】【御剑九歌】唯美仙侠手游御剑九歌+WIN学习手工端+视频教程+开服清档+运营后台+授权GM物品充值后台

资源介绍&#xff1a; 这也是仙梦奇缘的一个游戏 注意&#xff1a;外网14位IP或域名 ———————————————————————————————————– ps后台介绍: 1区运营后台&#xff1a;http://ip:9981/admin/admintool/ 2区运营后台&#xff1a;http://ip…

Day44:LeedCode 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

188. 买卖股票的最佳时机 IV 给你一个整数数组 prices 和一个整数 k &#xff0c;其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说&#xff0c;你最多可以买 k 次&#xff0c;卖 k 次。 注意&…

[深度学习]卷积理解

单通道卷积 看这个的可视化就很好理解了 https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md 多通道卷积 当输入有多个通道时,卷积核需要拥有相同的通道数. 假设输入有c个通道,那么卷积核的每个通道分别于相应的输入数据通道进行卷积,然后将得到的特征图对…

51单片机STC89C52RC——14.1 直流电机调速

目录 目的/效果 1&#xff1a;电机转速同步LED呼吸灯 2 通过独立按键 控制直流电机转速。 一&#xff0c;STC单片机模块 二&#xff0c;直流电机 2.1 简介 2.2 驱动电路 2.2.1 大功率器件直接驱动 2.2.2 H桥驱动 正转 反转 2.2.3 ULN2003D 引脚、电路 2.3 PWM&…

智能光伏开发都能用到什么软件和工具?

随着全球对可再生能源的日益重视和光伏技术的快速发展&#xff0c;智能光伏开发已成为推动能源转型的重要力量。在光伏项目的全生命周期中&#xff0c;从设计、建设到运营管理&#xff0c;各种软件和工具的应用发挥着至关重要的作用。 一、光伏系统设计软件 1、PVsyst PVsyst…

Linux 端口

什么是虚拟端口 计算机程序之间的通讯&#xff0c;通过IP只能锁定计算机&#xff0c;但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序&#xff0c;确保程序之间进行沟通。 IP地址相当于小区地址&#xff0c;在小区内可以有许多用户&#xff08;程序&#xff09;&…

植物大战僵尸融合版最新版1.0下载及安装教程

《植物大战僵尸融合版》最新版1.0已经发布&#xff0c;为粉丝们带来了全新的游戏体验。这个版本由B站UP主蓝飘飘fly精心打造&#xff0c;引入了创新的植物融合玩法&#xff0c;让玩家可以享受策略和创意的结合。以下是游戏的详细介绍和安装指南&#xff1a; 游戏特色介绍 全新…

基于深度学习的图像背景剔除

在过去几年的机器学习领域&#xff0c;我一直想打造真正的机器学习产品。 几个月前&#xff0c;在参加了精彩的 Fast.AI 深度学习课程后&#xff0c;似乎一切皆有可能&#xff0c;我有机会&#xff1a;深度学习技术的进步使许多以前不可能实现的事情成为可能&#xff0c;而且开…

Java--继承

1.继承的本质是对某一批类的抽象&#xff0c;从而实现对世界更好的建模 2.extends的意思是“扩展”&#xff0c;子类是父亲的扩展 3.Java中只有单继承&#xff0c;没有多继承 4.继承关系的两个类&#xff0c;一个为子类&#xff08;派生类&#xff09;&#xff0c;一个为父类…

欧科云链大咖对话:Web3原生创新静默期,科技巨头却在两极化发展

出品&#xff5c;OKG Research 作者&#xff5c;Hedy Bi 上周末&#xff0c;欧科云链研究院接受FT中文的邀请&#xff0c;作为圆桌嘉宾参与了由FT中文网与上海交通大学上海高级金融学院联合主办的金融大师课。在圆桌环节&#xff0c;笔者与各位教授和金融行业科技创新前沿实践…

案例精选 | 聚铭网络助力南京市玄武区教育局构建内网日志审计合规体系

南京市玄武区教育局作为江苏省教育领域的先锋机构&#xff0c;其工作重点涵盖了教育政策的实施、教育现代化与信息化的融合、教育资源的优化、教育质量的提升以及教育公平的促进。在这一背景下&#xff0c;网络安全管理成为了确保教育信息化顺利推进的关键环节之一。 根据玄武…

Nacos单机部署、集群部署以及Nacos默认持久化derby数据库和配置mysql数据库

1. Nacos Windows 下载 1.1 去nacos官网下载nacos-server 发布历史 | Nacos 官网https://nacos.io/download/release-history/ 下载版本为 nacos-server-2.3.1.zip 2. Derby数据库 2.1 默认使用Derby数据库 官网下载Derby数据库即可。 Apache Derby数据库https://db.apac…

昇思25天学习打卡营第9天|MindSpore使用静态图加速(基于context的开启方式)

在Graph模式下&#xff0c;Python代码并不是由Python解释器去执行&#xff0c;而是将代码编译成静态计算图&#xff0c;然后执行静态计算图。 在静态图模式下&#xff0c;MindSpore通过源码转换的方式&#xff0c;将Python的源码转换成中间表达IR&#xff08;Intermediate Repr…

VSCode远程服务器

一、安装VSCode Windows安装Visual Studio Code(VS Code)-CSDN博客 二、VSCode中安装Remote-SSH插件 1、在应用商店中搜索Remote - SSH并安装 2、安装后会出现下面标注的图标 三、开始SSH连接 1、点击加号&#xff0c;创建SSH连接 2、输入地址&#xff0c;格式是&#xff1a;…

文件打开的系统错误分析流程

当用户出现“Open file failed”错误时&#xff0c;手动产生dump文件。 &#xff08;1&#xff09;打开资源管理器&#xff0c;选择AppNameXXX.exe进程&#xff0c;右击鼠标选择“创建转储文件” (2) 生成转储文件 3.获取用户转储文件 4.用Visual studio2015打开dump文件分析…