Docker 基础概念学习

前言:

1. docker 的应用场景

①微服务架构:每个服务器独立容器化,便于管理和扩展

②CI/CD 流水线:与Jenkins/GitLab CI 集成,实现自动化构建和测试

③开发环境标准化:新成员意见启动全套依赖服务(如数据库、消息队列)

④云原生基础:Kubernetes 等编排工具基于 Docker 管理容器集群

⑤开发环境标准化(目前能接触到的作用)

2. 核心优势

跨平台一致性:解决 "在我机器上能跑" 的问题,确保开发、测试、生产环境一致

资源高效:容器直接共享主机内核,无需虚拟化整个操作系统,节省内存和CPU

快速部署:秒级启动容器,支持自动化扩容

隔离性:每个容器拥有独立的文件系统、网络和进程空间

3. 核心概念

容器:它是镜像的运行实例,当你运行一个镜像时,Docker 就会基于这个"安装包"(镜像)启动一个"软件"(容器),可以基于同一个镜像启动无数个相互隔离的容器,容器会消耗CPU和内存,是真正干活的进程

镜像:只读的模版,里面打包了运行一个软件所需的东西:代码、运行环境、库、配置等等,可以在电脑上拥有跟多个不同的 "安装包"(镜像)

Dockerfile:文本文件,描述如何自动构建镜像(例如指定基础镜像,安装软件、复制文件等)

仓库:存储和分发镜像的平台,如Docker Hub(官方公共仓库)或私有仓库(如Harbor)

可以把镜像想象成一个 "安装包" ,而容器就是按照这个安装包启动起来的,正在运行的 "软件",下面还会详细解释

一、Docker 基础概念

1. 什么是容器化技术

容器共享主机内核,轻量、隔离且高效,不像虚拟机需要完整的操作系统:

上层是多个容器,每一个容器独立运行一个应用

中间层是Docker,负责管理这些容器

底层是主机操作系统和基础设置,为容器提供硬件和系统支持

  1. 传统应用部署的痛点

环境不一致:应用在开发环境运行正常,但在测试或生产环境出现问题

依赖管理复杂:不同应用需要不同版本的运行时、库文件等

资源利用率低:传统虚拟机需要完整的操作系统,占用大量资源

部署复杂:需要手动配置环境,安装依赖,容易出错

  1. 容器化技术的解决方案

环境标准化:将应用及其依赖打包在一起,确保任何环境中都能一致运行

轻量化:容器共享宿主机的操作系统内核,比虚拟机更轻量

快速部署:容器可以在几秒内启动,大大提高了部署效率

可移植性:一次构建,到处运行

3.容器化的核心理念

容器化遵循"不可变基础设施的理念"

应用和环境被打包成不可变的镜像

每次部署都使用相同的镜像

配置通过环境变量或配置文件注入

问题修复通过重新构建镜像而非修改运行中的容器

二、Docker 的核心概念

1.镜像(Image)

定义:镜像是一个只读的模版,包含了运行应用所需的所有内容:代码、运行时库文件、环境变量和配置文件

特点:

分层存储:镜像是由多个层组成,每一层代表一次修改

只读性:镜像本身是只读的,不能直接修改

可复用:同一个镜像可以创建多个容器

版本管理:通过标签(tag)进行版本管理

类比理解:镜像就像是一个安装程序或者模版,它定义了应用运行所需的一切,但本身不能直接运行

  1. 容器(Container)

定义:容器是镜像的运行实例,是一个轻量级、可移植的执行环境

特点:

隔离性:每个容器都有自己的文件系统、网络和进程空间

临时性:容器可以被创建、启动、停止、删除

可写层:容器在镜像基础上添加了一个可写层

进程级:容器内通常运行一个主进程

类比理解:如果镜像是类,那么容器就是对象实例,一个镜像可以创建多个容器,就像一个类可以创建多个对象

  1. 仓库(Repository)

定义:仓库是存储和分发镜像的地方,可以包含一个镜像的多个版本

分类:

公共仓库:如Docker Hub,任何人都可以使用

私有仓库:企业内部搭建,用于存储私有镜像

官方仓库:由软件官方维护的镜像仓库

Registry VS Repository:

Registry:仓库注册服务器,如Docker Hub

Repository:具体的镜像仓库,如 nginx,mysql

三、Docker 与虚拟机的区别

1. 架构对比

2. 容器 VS 虚拟机结构

3. 使用场景对比

虚拟机适用场景:

需要完全隔离的环境

运行不同操作系统的应用

需要硬件级别的安全隔离

Docker容器适用场景

开发环境标准化

微服务架构

CI/CD 流水线

应用快速部署和扩展

相关推荐
AI的探索之旅1 小时前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
sakiko_1 小时前
Swift学习笔记39-实战注意事项
前端·笔记·学习·swift
Dlrb12111 小时前
Linux驱动---Linux 中断系统及其上与下半部的介绍与阻塞IO实现按键检测
linux·嵌入式硬件·imx6ull·中断·阻塞io
短视频矩阵源码定制1 小时前
个性化学习机构四大模式深度评测与选型指南
人工智能·学习
哎呦,帅小伙哦2 小时前
Linux系统中/proc/diskstats文件字段解析
linux
xiaoxiangsiyan2 小时前
企业网络运维自动化与管理协议深度指南
linux·运维·服务器·网络·学习·自动化
数智工坊2 小时前
SAMosaic3D:以可学习马赛克组装实现实时在线3D实例分割 | CVPR 2026 论文精读
学习·3d
我是小灰灰吖2 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
Aision_2 小时前
实习学习笔记:HTTP请求走私漏洞全方位解析
笔记·学习·安全·web安全·http·网络安全·网络攻击模型