Docker:入门前了解

Docker:入门了解

    • 前言
    • [一、Docker 是什么?核心介绍](#一、Docker 是什么?核心介绍)
      • [1.1 定义与版本说明](#1.1 定义与版本说明)
      • [1.2 适用人群与前置知识](#1.2 适用人群与前置知识)
    • 二、传统部署痛点与容器化核心思想
      • [2.1 传统部署四大痛点](#2.1 传统部署四大痛点)
      • [2.2 不可变基础设施核心设计理念](#2.2 不可变基础设施核心设计理念)
    • [三、Docker 五大核心优势](#三、Docker 五大核心优势)
    • [四、Docker 四大主流应用场景](#四、Docker 四大主流应用场景)
      • [4.1 微服务架构](#4.1 微服务架构)
      • [4.2 CI/CD 自动化流水线](#4.2 CI/CD 自动化流水线)
      • [4.3 统一团队开发环境](#4.3 统一团队开发环境)
      • [4.4 云原生底层底座](#4.4 云原生底层底座)
    • [五、Docker 四大核心概念](#五、Docker 四大核心概念)
      • [5.1 镜像(Image)](#5.1 镜像(Image))
      • [5.2 容器(Container)](#5.2 容器(Container))
      • [5.3 Dockerfile](#5.3 Dockerfile)
      • [5.4 仓库(Registry)](#5.4 仓库(Registry))
    • [六、Docker 与虚拟机对比](#六、Docker 与虚拟机对比)
    • [七、Docker C/S 架构详解](#七、Docker C/S 架构详解)
      • [7.1 四大基础组件](#7.1 四大基础组件)
      • [7.2 配套工具](#7.2 配套工具)
        • [Docker Compose](#Docker Compose)
        • [Docker Swarm](#Docker Swarm)
        • [Docker Network](#Docker Network)
        • [Docker Volume](#Docker Volume)
      • [7.3 完整业务流程](#7.3 完整业务流程)
    • 八、高频命令
    • 十、总结

前言

在微服务、云原生、CI/CD 持续交付全面普及的当下,Docker 已经成为后端开发、运维、DevOps 工程师的必备核心技能。

很多初学者刚接触容器技术,都会存在以下困惑:

  1. Docker 和虚拟机到底有什么区别?
  2. 镜像、容器、仓库、Dockerfile 到底是什么关系?
  3. Docker 架构是怎么运行的?为什么它更轻、更快?
  4. 日常开发、上线、自动化部署到底怎么用 Docker?

本文整合菜鸟教程全套 Docker 基础内容,结构化梳理并补充实战理解,一篇文章吃透 Docker 完整基础体系,适合入门学习、面试复习。

一、Docker 是什么?核心介绍

1.1 定义与版本说明

Docker 是基于 Go 语言开发、Apache2.0 开源协议的轻量级应用容器引擎。可将应用代码、运行环境、依赖库、配置文件统一打包生成可移植镜像,实现一次构建,随处运行。

17.03 版本后分为两个版本:

  • CE 社区版:免费开源,开发、测试、生产通用
  • EE 企业版:商业付费,提供安全扫描、官方技术支持、企业级集群能力

1.2 适用人群与前置知识

适用人群:后端开发、运维、DevOps、云原生初学者

前置基础:掌握常用 Linux 基础命令

二、传统部署痛点与容器化核心思想

2.1 传统部署四大痛点

容器化出现前主流部署方式为物理机、虚拟机部署,存在明显缺陷:

  1. 环境不一致:本地运行正常,测试、生产环境报错
  2. 依赖冲突:多项目软件版本不兼容,维护成本高
  3. 资源浪费:虚拟机内置完整操作系统,硬件开销大
  4. 部署低效:手动安装配置,流程无标准化,易人为出错

2.2 不可变基础设施核心设计理念

  1. 应用、运行环境、依赖打包为只读镜像,不可直接修改
  2. 开发、测试、生产环境统一使用同一份镜像
  3. 动态配置通过环境变量、外部配置文件注入
  4. 版本迭代、故障修复依靠重新构建镜像,不修改运行中容器

三、Docker 五大核心优势

  1. 环境完全统一,消除环境差异类故障
  2. 轻量化资源占用,共享宿主机内核,单机可运行上百容器
  3. 秒级启动,支持快速扩缩容,交付效率高
  4. 容器进程、网络、文件系统相互隔离,互不干扰
  5. 镜像支持版本标签,线上异常可一键回滚旧版本

四、Docker 四大主流应用场景

4.1 微服务架构

各业务服务单独容器化,服务解耦,可独立迭代、扩容,适配分布式系统。

4.2 CI/CD 自动化流水线

对接 Jenkins、GitLab CI 等工具,代码提交后自动完成构建、测试、打包、部署全流程。

4.3 统一团队开发环境

项目提供 Docker 配置,新人仅需安装 Docker,一条命令拉起数据库、缓存、后端服务,无需本地安装各类中间件。

4.4 云原生底层底座

Kubernetes 容器编排平台底层依赖 Docker,是大规模集群、私有云标准底层技术。

五、Docker 四大核心概念

5.1 镜像(Image)

只读分层模板,包含程序运行所需系统、依赖、代码、配置;分层存储节省磁盘,通过 Tag 区分版本;类比面向对象的类。

5.2 容器(Container)

镜像运行后的实例,在镜像只读层上方新增可读写层;拥有独立网络、进程、文件系统;容器删除后内部数据默认丢失;类比面向对象的对象,一个镜像可创建多个容器。

5.3 Dockerfile

纯文本脚本,标准化自动化构建自定义镜像,定义基础镜像、文件复制、依赖安装、启动指令。

5.4 仓库(Registry)

镜像存储分发平台:

  • 公共仓库:Docker Hub,海量开源官方镜像
  • 私有仓库:Harbor、阿里云容器镜像服务,企业存放私有业务镜像

六、Docker 与虚拟机对比

对比维度 虚拟机(VM) Docker 容器
隔离层级 硬件级虚拟化 操作系统进程级隔离(Namespace+Cgroups)
操作系统 独立完整客户机系统 共享宿主机内核
资源占用 高,GB级消耗 极低,仅占用应用进程资源
启动速度 分钟级 秒级
镜像体积 GB级别 MB级别
性能损耗 损耗较大 接近物理机原生性能
单机部署数量 几台至十几台 上百台

适用场景:

  • 虚拟机:需要不同操作系统、硬件级强安全隔离场景
  • Docker:微服务、自动化部署、统一开发环境、云原生集群

七、Docker C/S 架构详解

Docker 采用客户端-服务端架构,依靠 REST API 完成通信。

7.1 四大基础组件

  1. Docker Client:docker 命令行工具,仅转发用户指令,不执行实际操作
  2. Docker Daemon(dockerd):宿主机后台核心进程,管理镜像、容器、网络、数据卷,对接镜像仓库,处理全部API请求
  3. Docker Engine API:标准化REST接口,客户端与守护进程通信桥梁,支持代码远程调用
  4. Registry:镜像存储仓库,分为公有、私有两类

7.2 配套工具

Docker Compose

使用 docker-compose.yml 管理多关联服务,一键启动整套应用,多用于本地开发测试。

yaml 复制代码
version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456

启动命令:docker-compose up

Docker Swarm

官方原生集群调度工具,实现多主机容器集群、负载均衡,生产环境大多替换为K8s。

Docker Network

内置多种网络驱动:bridge单机容器互通、host复用宿主机网络、overlay跨主机集群通信。

Docker Volume

数据持久化方案,数据独立于容器生命周期,容器销毁数据不丢失,数据库必备。

7.3 完整业务流程

  1. 编写Dockerfile
  2. docker build 构建自定义镜像
  3. docker push 将镜像上传至镜像仓库
  4. 服务器执行docker pull拉取镜像
  5. docker run / Compose 启动容器,配置网络与数据卷
  6. 日常通过docker命令管理容器日志、启停、扩容
  7. 新版本迭代重复构建推送,故障切换旧镜像回滚

八、高频命令

镜像操作

bash 复制代码
# 拉取镜像
docker pull nginx
# 构建镜像
docker build -t my-demo:1.0 .
# 查看本地镜像
docker images
# 删除镜像
docker rmi 镜像ID

容器生命周期

bash 复制代码
# 后台启动容器并映射端口
docker run -d -p 80:80 --name my-nginx nginx
# 查看运行容器
docker ps
# 查看全部容器(含已停止)
docker ps -a
# 进入容器终端
docker exec -it 容器ID /bin/bash
# 停止、重启、删除容器
docker stop 容器ID
docker restart 容器ID
docker rm 容器ID

仓库、网络、数据卷

bash 复制代码
# 登录私有镜像仓库
docker login shturl.cc/apCD
# 推送镜像
docker push shturl.cc/VPzxJyDmjBbMVC9e
# 创建自定义网络
docker network create demo-net
# 创建持久化数据卷
docker volume create mysql-data

十、总结

Docker是云原生、微服务、DevOps体系底层核心技术。依靠镜像打包统一环境,容器实现轻量化部署,标准化流程简化上线运维工作,是学习K8s、容器化项目改造的前置基础。