一、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。