云原生学习笔记(四) 初识Docker

第六篇:认识 Docker:容器化开发的起点

基于 Docker 官方文档:docs.docker.com/get-started...


一、Docker 是什么?

Docker 是一个开源平台,用于简化应用程序的 开发、交付和运行 过程。

它通过将应用及其依赖项打包进 "容器"(Containers)中,使得应用能够在各种环境中保持一致性地运行。


二、Docker 的核心优势

1. 快速、一致的应用交付

  • 构建 → 测试 → 共享 → 生产部署
  • 消除"在我电脑上能运行"的环境问题

2. 响应式部署与扩展

  • 一次构建,随处运行
  • 支持物理机、虚拟机、公有云、私有云等平台

3. 高效利用资源

  • 启动快、资源占用少、部署密度高
  • 对比虚拟机,容器无需嵌套 Guest OS

三、Docker 架构组件

组件 描述
Docker Daemon 守护进程,接收并处理请求,管理容器、镜像等
Docker Client 用户命令行交互界面,如 docker rundocker build
Docker Desktop 本地开发环境集成,包含客户端、守护进程、Compose 等
Docker Registry 镜像仓库,默认是 Docker Hub

四、核心对象理解

🧱 镜像(Image)

  • 只读模板,定义容器运行时的应用与依赖
  • 通过 Dockerfile 构建
  • 多层结构,支持缓存与复用

📦 容器(Container)

  • 镜像的运行实例
  • 轻量、隔离、可移植
  • 可启停、销毁、重建

五、Docker 的底层技术原理

技术 说明
Namespaces 进程、网络、挂载点等隔离,创建"沙箱"运行环境
Cgroups 控制 CPU、内存、I/O 等资源分配
OverlayFS 实现镜像的分层与复用,支持构建和版本控制

六、现实问题 Docker 如何解决?

问题类型 传统开发痛点 Docker 的解决方案
环境不一致 不同开发/测试/生产环境配置差异大 镜像封装整个运行环境
发布流程慢 多步骤人工部署 镜像 + CI/CD 快速交付
系统资源浪费 VM 启动慢,占用多 容器轻量、秒级启动
可维护性差 依赖冲突、难以复现 容器化构建标准化

七、示意图:Docker 架构图

可插入图片(示例:本地环境使用 CLI 操作 Docker Daemon 管理容器/镜像,Registry 拉取/推送镜像等)


八、总结

Docker 是现代云原生应用架构的基石之一,改变了开发、交付和运维流程:

  • 快速一致的交付方式
  • 跨平台的可移植性
  • 自动化与可观测的基础能力

第七篇:深入理解 Docker 基本概念

参考资料


一、什么是容器(Container)?

容器是一种轻量级、可移植、自包含的软件包单元,用于封装应用及其运行时环境。

✅ 特性:

  • 进程隔离:每个容器都运行在独立的 Linux Namespace 中
  • 资源限制:通过 Cgroups 控制 CPU/内存/I/O 等
  • 便携可移植:可以在任何安装了 Docker 的主机上运行
  • 快速启动:秒级启动,适合弹性部署

🧠 容器 vs 虚拟机对比:

特性 虚拟机 (VM) 容器 (Container)
启动速度 几分钟 几秒
资源开销 包含完整 OS 共享宿主机内核
隔离性 强(独立内核) 中(共享内核 + 隔离)
便携性 相对差 非常强

二、什么是镜像(Image)?

镜像是构建容器的蓝图或模板,包含了应用及其依赖的所有文件系统层。

🏗 镜像的组成:

  • 多层结构(基于 Union File System)
  • 通常由底层基础镜像(如 ubuntu)+ 应用安装指令构建
  • 每一层都是只读的,可缓存重用

🔧 相关概念:

  • Dockerfile:定义镜像构建过程的文件
  • Image ID:每个镜像的唯一标识
  • Tag :版本标记(如:nginx:1.25.3

三、什么是镜像仓库(Registry)?

镜像仓库是用来存储与分发镜像的服务器。

🎯 分类:

  • 公有仓库 :如 Docker Hub
  • 私有仓库:自建或托管(如 Harbor、AWS ECR)

🧩 镜像命名格式:

css 复制代码
\[registry\_url/]repository\[:tag]

示例:

  • nginx:latest(默认从 Docker Hub)
  • registry.example.com/myapp:1.0

🔁 操作命令:

  • docker pull nginx:拉取镜像
  • docker push myapp:1.0:推送镜像
  • docker login:登录镜像仓库

四、什么是 Docker Compose?

Docker Compose 是一个用于定义和管理多容器应用的工具。

✍ 配置文件:

使用 docker-compose.yml 文件来声明:

  • 服务(Service)
  • 网络(Networks)
  • 卷(Volumes)

📦 示例配置:

yaml 复制代码
version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  redis:
    image: redis

🚀 常用命令:

  • docker-compose up:启动应用
  • docker-compose down:停止并清理资源
  • docker-compose logs:查看容器日志

📌 应用场景:

  • 启动多个依赖服务(如 Web + DB)
  • 快速构建本地开发环境
  • 简化部署脚本

五、总结

概念 说明
容器 应用运行时的隔离环境
镜像 容器的构建模板(只读层)
仓库 镜像集中存储与共享的位置
Docker Compose 定义和管理多容器应用

这些核心概念共同构成了 Docker 平台的使用基础,是迈向云原生开发的第一步。


相关推荐
衍余未了1 小时前
k8s除了主server服务器可正常使用kubectl命令,其他节点不能使用原因,以及如何在其他k8s节点正常使用kubectl命令??
云原生·容器·kubernetes
To_再飞行1 小时前
K8s 存储配置资源
linux·云原生·容器·kubernetes
To_再飞行3 小时前
K8s 调度管理
linux·云原生·kubernetes
milanyangbo3 小时前
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
分布式·后端·云原生·架构
大咖分享课4 小时前
系统越拆越乱?你可能误解了微服务的本质!
微服务·云原生·架构
水上冰石6 小时前
k8s证书理论知识之/etc/kubernetes/pki/ 和/var/lib/kubelet/pki/的区别
云原生·容器·kubernetes·数字证书·证书过期
To_再飞行6 小时前
K8s访问控制(一)
云原生·容器·kubernetes
虚伪的空想家6 小时前
K8S的Pod为什么可以解析访问集群之外的域名地址
云原生·容器·kubernetes·dns·域名解析·pod·coredns
❀͜͡傀儡师6 小时前
二进制安装Kubernetes(k8s)v1.34.0
云原生·容器·kubernetes