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。

相关推荐
java_logo6 小时前
Docker 部署 NetBox:轻松搭建 IPAM / DCIM 网络资产管理平台
docker·容器·轩辕镜像·netbox部署·netbox部署方案·netbox部署文档·docker部署netbox
码农阿豪6 小时前
【金仓数据库征文】Mac开发环境|SpringBoot3 + MyBatisPlus对接KES V9 Docker实战全指南
数据库·macos·docker
杨云龙UP6 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
PC2005-cloud6 小时前
从零上手 openGauss:Docker 部署 + 全场景连接教程
运维·docker·容器
计算机魔术师7 小时前
Qwen3.8-Max 发布:开源最强编码与协作模型,2.4T 参数
开源
风曦Kisaki7 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
冬奇Lab7 小时前
开源项目第176期:Better Harness — 不审查 diff,审查工作流本身,给 AI 编程 Agent 的五维评估框架
人工智能·开源·agent
_艾伦 耶格尔.8 小时前
基础I/O
linux
遇码9 小时前
认识 LakeMind:一款本地优先的开源 AI 数据探索工作台
人工智能·开源
AlfredZhao9 小时前
Docker 查看容器日志:别只记 `docker logs -f`
docker