(一)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.rhkb.cn/news/369406.html

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

相关文章

[SAP ABAP] 子例程

子例程 示例1 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 示例2 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 补充扩展练习 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 提示…

深入理解【 String类】

目录 1、String类的重要性 2、常用方法 2、1 字符串构造 2、2 String对象的比较 2、3 字符串查找 2、4字符转换 数值和字符串转换&#xff1a; 大小写转化&#xff1a; 字符串转数组&#xff1a; 格式转化&#xff1a; 2、5 字符串替换 2、6字符串拆分 2、7 字符串…

vue项目创建+eslint+Prettier+git提交规范(commitizen+hooks+husk)

# 步骤 1、使用 vue-cli 创建项目 这一小节我们需要创建一个 vue3 的项目&#xff0c;而创建项目的方式依然是通过 vue-cli 进行创建。 不过这里有一点大家需要注意&#xff0c;因为我们需要使用最新的模板&#xff0c;所以请保证你的 vue-cli 的版本在 4.5.13 以上&#xff…

ELK日志系统和Filebeat采集器的学习总结

ELK是ElasticSerach、Logstash、Kina Logstash负责采集数据&#xff0c;Logstash有三个插件&#xff0c;input、filter、output&#xff0c;filter插件作用是对采集的数据进行处理&#xff0c;过滤的&#xff0c;因此filter插件可以选&#xff0c;可以不用配置。 ElasticSear…

Android super.img结构及解包和重新组包

Android super.img结构及解包和重新组包 从Android10版本开始&#xff0c;Android系统使用动态分区&#xff0c;system、vendor、 odm等都包含在super.img里面&#xff0c;编译后的最终镜像不再有这些单独的 image&#xff0c;取而代之的是一个总的 super.img. 1. 基础知识 …

npm安装依赖报错——npm ERR gyp verb cli的解决方法

1. 问题描述 1.1 npm安装依赖报错——npm ERR! gyp verb cli npm MARN deprecated axiosQ0.18.1: critical security vuLnerability fixed in v0.21.1. For more information, npm WARN deprecated svg001.3.2: This SVGO version is no Longer supported. upgrade to v2.x.x …

第二节:如何使用thymeleaf渲染html(自学Spring boot 3.x的第一天)

大家好&#xff0c;我是网创有方&#xff0c;今天来学习如何使用thymeleaf渲染html。该模板运用不广泛&#xff0c;所以本节内容了解既可。 第一步&#xff1a;创建html文件。 在模板templates目录下创建一个html文件。 编写代码如下&#xff1a; <!DOCTYPE html> <…

雷电模拟器报错remount of the / superblock failed: Permission denied remount failed

报错截图 解决方法 打开设置 设置配置system.vmdk可写入 解决

【MySQL】mysql访问

mysql访问 1.引入MySQL 客户端库2.C/C 进行增删改3.查询的处理细节4.图形化界面访问数据库4.1下载MYSQL Workbench4.2MYSQL Workbench远程连接数据库 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&a…

在Apache HTTP服务器上配置 TLS加密

安装mod_ssl软件包 [rootlocalhost conf.d]# dnf install mod_ssl -y此时查看监听端口多了一个443端口 自己构造证书 [rootlocalhost conf.d]# cd /etc/pki/tls/certs/ [rootlocalhost certs]# openssl genrsa > jiami.key [rootlocalhost certs]# openssl req -utf8 -n…

【C++】哈希表 ---开散列版本的实现

你很自由 充满了无限可能 这是很棒的事 我衷心祈祷你可以相信自己 无悔地燃烧自己的人生 -- 东野圭吾 《解忧杂货店》 开散列版本的实现 1 前言2 开散列版本的实现2.1 节点设计2.2 框架搭建2.3 插入函数2.4 删除函数2.5 查找操作2.6 测试 Thanks♪(&#xff65;ω&#x…

也说字母U:房子到底是什么?

​ 不记得是第几期了&#xff0c;湖南卫视有档很火的音乐节目叫《歌手》&#xff0c;那一期是最终是韩磊夺得了冠军&#xff0c;他有一杀手锏&#xff0c;叫《向天再借五百年》&#xff0c;他要不夺冠&#xff0c;好像大家也对不起对这首歌的印象&#xff0c;因为他是多少人的记…

创建本地仓库

一、新建挂载目录 二、将挂载本地镜像挂载到目录 三、配置yum仓库 一、新建挂载目录 mkdir /BenDiCangKu 二、将挂载本地镜像挂载到目录 1、先连接本地光盘 2、挂载光盘 mount /dev/sr0 /BenDiCangKu 3、查看挂载 由此可见挂载成功 三、配置yum仓库 1、新建yum仓库文件…

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型20240705

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型202407051607 这次HumbleBundle捆绑包是UE虚幻军事题材的&#xff0c;内容非常多。 有军事基地、赛博朋克街区、灌木丛景观环境等 HB捆绑包虚幻…

相关技术 太阳能热水器循环水泵制作技术

网盘 https://pan.baidu.com/s/1oAKwUEGkKnEgxE-F4znKow?pwdidxd 双温区蓄能供热型太阳能热水系统及其工作方法.pdf 双罐叠压节能恒温型太阳能热水机组.pdf 基于傅科电流的循环式风能热水器.pdf 基于太阳能利用的建筑冷热电联产系统及工作方法.pdf 基于太阳能和热泵的双蓄式热…

护航端侧大模型平稳健康发展,百度大模型内容安全Lite版正式发布

6月28日&#xff0c;WAVE SUMMIT深度学习开发者大会 2024 “智变应用、码动产业”平行论坛在北京召开。与会&#xff0c;百度大模型内容安全Lite版正式发布&#xff0c;可面向低算力和超低算力的终端大模型提供离线场景下的一站式安全解决方案&#xff0c;为各类终端大模型平稳…

AI大模型对话(上下文)缓存能力

互联网应用中&#xff0c;为了提高数据获取的即时性&#xff0c;产生了各种分布式缓存组件&#xff0c;比如Redis、Memcached等等。 大模型时代&#xff0c;除非是免费模型&#xff0c;否则每次对话都会花费金钱来进行对话&#xff0c;对话是不是也可以参照缓存的做法来提高命…

QT C++(QT控件 QLabel,QLCDNumber,QProgressBar,QCalendarWidget)

文章目录 1. QLabel2. QLCDNumber3. QProgressBar4. QCalendarWidget 1. QLabel QLabel常见属性&#xff1a; text&#xff1a;QLabel中的文本textFormat&#xff1a;文本中的格式 Qt::PlainText:纯文本Qt::RichText:富文本&#xff0c;支持html标签Qt::MarkdownText markdow…

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

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

基于Oauth2.0的OpenFeign远程调用

目录 前言 1.引入openfeign相关依赖 2.开启openFeign远程调用&#xff0c;在启动类头加上注解即可 3. 提供远程调用接口&#xff0c;接口名称必须与controler名称保持一致 4.远程调用关键代码 4.1 注入restTemplate 4.2 配置拦截器 4.3 设置请求头 4.4 获取请求结果 4.5 远…