当前位置: 首页 > news >正文

Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念

大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。

什么是Docker?

Docker是一个开源的应用容器引擎,它是一种容器化的技术。

它的功能:将我们的系统(如:ERP系统、OA系统、自己公司开发的软件)等相关应用程序与相关的依赖包,打包成一个可以随意移动的“包”,这个“包”也就是容器镜像。通过这个容器镜像,可以在不同的环境实现快速部署,保证应用程序的一致性与可移植性。

讲个小故事方便理解它是什么?能做什么?

一家公司开发一套人脸识别的系统,这套人脸识别系统后台有很多的相关应用程序和相关的依赖包,现在有10家专业考勤公司要购买这套人脸识别系统,但是这10家考勤公司提供的操作系统环境五花八门,有的提供Win10系统、有的提供Ubuntu12.04系统、有的提供Ubuntu20.10系统、有‌的提供RedHat系列的操作系统。

这就让这家公司的老板着急了,理论上我们人脸识别系统都支持上述所有操作系统部署,但是每个系统的小版本和环境可能会有很大的差异性,没有做过相关的兼容性系统测试呀,到时候遇到问题太影响用户体验和公司的口碑。

这时候我们的一个技术人员站出来说,老板交给我来解决,我们可以使用Docker技术来解决当前所遇到的难题。

在Docker中只要我们将人脸识别的所有应用程序和相关依赖包打包成一个容器镜像。这个容器里面装有系统运行所需的一切。到时候只要在用户各自的操作系统中安装一个Docker。我们可以轻松的将打包好的人脸识别容器镜像部署到他们的环境中。

Docker具有强大的隔离和封装功能,不管用户的操作版本如何,它都能保证容器内的应用程序和依赖包稳定、一致性环境中运行,解决兼容性问题。

因为Docker容器是没有独立的操作系统,它的所有容器都是共享操作主机的系统内核。它创建的所有容器,每一个容器都拥有独立的运行环境,并且容器有自己的根文件系统,容器虽然共享操作主机内核,但是可以对网络、进程、文件、环境等信息跟宿主机(服务器或者操作主机)相互隔离开。

Docker三大核心概念

仓库(Repository)

用于存放各种镜像的地方,对镜像进行统一管理。

Docker Hub是常见的公共仓库,除此之外还可以搭建自己的私有仓库。

镜像(image)

创建的镜像容器,比如刚刚说的人脸识别镜像容器,里面包括了所有的应用程序和相关依赖包、环境变量等信息。

可以理解为是一个软件安装包。

容器(Container)

镜像运行的实例,可以对容器进行启动、停止、删除等操作。、

可以理解为可以运行的软件,比如QQ、微信这种。

Docker一些优点

1、环境的一致性:解决本地开发环境可以使用,到其他不同环境出现的各种奇葩问题。

2、快速部署:通过容器镜像可以快速部署应用,缩短部署的时长。

3、资源利用率高:因为它是共享的操作机系统内核,占用的资源就少,比如同样一个50G内存,通过虚拟机可以部署2台服务,但是通过Docker可能是它的2倍以上的资源。

4、版本管理:可以对镜像进行版本控制,当需要进行版本迭代可以快速回滚、迭代。

5、易于扩展:可以很轻松的实现水平扩展。比如人脸识别系统当业务量太大后,我们可以快速通过原有的人脸识别容器镜像运行一个新的容器,运行时修改下宿主机的端口映射并且使用负载均衡技术如nginx配置它的负载情况即可。

 

http://www.lryc.cn/news/547602.html

相关文章:

  • Gitlab配置personal access token
  • 使用STM32CubeMX实现LED灯每秒闪烁一次(STM32G070CBT6单片机)
  • django中路由配置规则的详细说明
  • 游戏引擎学习第138天
  • 测试理论快速入门
  • 【PostgreSQL】如何免密使用PostgreSQL数据库内置工具
  • 模块15.常用API
  • 5c/c++内存管理
  • python实现的可爱卸载动画
  • 微服务的春天:基于Spring Boot的架构设计与实践
  • *VulnHub-FristiLeaks:1.3暴力解法、细节解法,主打软硬都吃,隧道搭建、寻找exp、提权、只要你想没有做不到的姿势
  • OpenCV 颜色空间:原理与操作指南
  • 国产编辑器EverEdit - 超多样式设置
  • rabbitmq版本升级并部署高可用
  • Visual Studio 2022新建c语言项目的详细步骤
  • Spring Boot使用JDBC /JPA访问达梦数据库
  • Spring Boot 消息队列(以RabbitMQ为例)
  • 单元测试与仿真程序之间的选择
  • 确认机制面临的挑战
  • 在MATLAB环境中,对矩阵拼接(Matrix Concatenation)的测试
  • [MySQL初阶]MySQL(4)基本查询
  • 基于STM32的智能家居蓝牙系统(论文+源码)
  • QTS单元测试框架
  • 《水利水电安全员考试各题型对比分析及应对攻略》
  • sqlite3 c++ client选择; c++环境搭建 : abseil-cpp | fnc12/sqlite_orm
  • IMX6ULL驱动开发uboot篇02
  • 智谱AI-FunctionCall
  • 数据保险箱:备份文件的关键价值与自动化实践
  • 数字电路基础——逻辑门
  • 爬虫逆向:脱壳工具BlackDex的详细使用