Docker 基础

一、Docker核心概念

  • 定义:开源的应用容器引擎,基于LXC(Linux Container)实现,使用Go语言开发。

  • 核心机制

    • 沙盒机制:容器之间完全隔离,无接口交互。

    • namespace:实现用户实例间的隔离。

    • cgroup:对CPU、内存等物理资源进行配额和调度。

  • 三大基本概念

    • 镜像(Image):只读的root文件系统,类似于类。

    • 容器(Container):镜像运行的实例,类似于对象。

    • 仓库(Repository):存储镜像的地方(如Docker Hub)。

二、Docker vs 虚拟机

特性 Docker容器 传统虚拟机
抽象层 少(无Hypervisor) 多(含Hypervisor)
资源利用率 高(直接使用物理机硬件) 低(需模拟硬件)
启动速度 秒级 分钟级
尺寸 小(仅应用+依赖) 大(含完整OS)

三、Docker版本演进要点

  • 初创期(1.0):从LXC转向libcontainer,建立分层存储。

  • 成长期(1.12):内置Swarm集群、服务发现、TLS加密。

  • 成熟期(17.03+):CE/EE分化,支持ARM,引入BuildKit。

  • 现代期:深度集成Kubernetes,Rootless模式,GPU支持,BuildKit默认。

四、安装与配置

安装方式

  • 自动安装curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  • 手动安装(Rocky/CentOS)

    bash

    复制代码
    yum install -y yum-utils
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install -y docker-ce
  • 启动验证systemctl start dockerdocker run hello-world

镜像加速(配置 /etc/docker/daemon.json

json

复制代码
{
  "registry-mirrors": ["https://your-mirror.aliyuncs.com", "https://docker.m.daocloud.io"]
}
  • 修改后需执行:systemctl daemon-reload && systemctl restart docker

五、重要配置项(daemon.json)

字段 作用 示例
data-root 数据存储路径 "/mnt/docker-data"
log-driver / log-opts 日志驱动及限制 "json-file", {"max-size":"10m"}
storage-driver 存储驱动 "overlay2"
insecure-registries 允许非HTTPS私有仓库 ["myregistry.local:5000"]
live-restore 守护进程重启时保持容器运行 true
features.buildkit 启用BuildKit true

六、Docker适用场景与局限性

  • 适用:Web应用打包发布、自动化测试、持续集成、PaaS环境搭建。

  • 局限 :不存储数据(日志、数据库等应挂载外部存储,如NFS、Ceph或-v映射)。

七、架构模式

  • C/S架构:客户端(CLI/API)与守护进程(dockerd)通信,守护进程负责创建、运行容器。

  • 组件:镜像、容器、仓库、主机、Registry、Machine。

相关推荐
梦想的颜色5 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
donoot7 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
fthux7 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
Felix-lxd8 小时前
Ubuntu 22.04 配置 Nginx
linux·nginx·ubuntu
修己xj9 小时前
让README “活”起来:Readme Typing SVG 介绍与本地化改造实践
开源
Tim_Van9 小时前
在 CentOS 7 中安装 Chromium 的完整步骤
linux·运维·chrome·centos
2023自学中9 小时前
C++ 内存追踪器
linux·c++
啵啵鱼爱吃小猫咪11 小时前
Ubuntu 20.04 + ROS Noetic 源码安装 libfranka 0.8.0 和 franka_ros 0.8.0 完整教程
linux·运维·ubuntu
ApacheSeaTunnel11 小时前
为什么 Data Ingestion 还没有被 Fivetran/Airbyte 完全解决?
大数据·开源·数据集成·seatunnel·技术分享·数据同步·airbyte·fivetran
程序员吕洞宾12 小时前
开源多维表格SmartTable V1.6:自动化工作流,把重复操作交给系统即可
开源·自动化·github·多维表格·飞书多维表