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 docker → docker 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。

相关推荐
HideF15 小时前
Linux
linux·服务器·网络
Ruiery17 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
丰锋ff19 小时前
压缩命令笔记
linux
时早玖沐19 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
SL_staff20 小时前
制造业订单交付总踩坑?用结构化节点协同模型重构计划系统
java·开源·全栈
不悔哥20 小时前
开源 CrewTrack:ESP32 加 RFID,自己组一台刷卡考勤机
开源
GeW21 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by2099921 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
SL_staff1 天前
APS动态重排实践:在多品种小批量场景下实现5分钟插单响应
java·开源·产品
cq林志炫1 天前
两个Linux服务器之间同步文件
linux·运维·服务器