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。

相关推荐
无限进步_40 分钟前
【Linux】gcc/g++ 编译:从源码到可执行文件的四个阶段
linux·运维·服务器
亚空间仓鼠9 小时前
Docker容器化高可用架构部署方案(六)
docker·容器·架构
原来是猿9 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
前端老曹9 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
AOwhisky10 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
冬奇Lab10 小时前
一天一个开源项目(第100篇):Easy-Vibe - Datawhale 出品的 AI 时代编程入门教程
人工智能·开源·资讯
咖啡里的茶i10 小时前
在Docker环境中安装Hadoop cluster 实验报告一
hadoop·docker·容器
rabbit_pro11 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
咖啡里的茶i12 小时前
在Docker环境中安装Hadoop cluster 实验报告三
docker
笑洋仟12 小时前
docker的overlay2目录占用磁盘空间很大,清理办法
运维·docker·容器