Docker 完整介绍

一套系统、实战、不啰嗦的 Docker 完整介绍,从概念到微服务场景全覆盖。


一、Docker 是什么(一句话抓核心)

Docker 是一个容器化引擎 ,用来把应用 + 依赖 + 环境 打包成一个可移植、可重复运行的标准镜像,在任何装了 Docker 的机器上一键运行。

对比:

  • 虚拟机:虚拟一整套操作系统,重、慢、占资源
  • 容器:共享宿主机内核,轻量、秒启、资源隔离

对微服务意义:服务独立打包、独立部署、环境一致、扩缩容极快


二、核心三大概念(必须吃透)

1. Dockerfile(构建文件)

文本文件,定义:

  • 基础镜像(如 openjdk, node, python
  • 拷贝代码
  • 暴露端口
  • 启动命令

示例(Java 微服务):

dockerfile

复制代码
FROM openjdk:17-jdk-slim
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

2. Image(镜像)

  • 只读模板
  • 分层存储
  • 一次构建,到处运行
  • 微服务:每个服务一个镜像

3. Container(容器)

  • 镜像运行后的实例
  • 独立进程、独立网络、独立文件系统
  • 可启动、停止、删除、迁移

三、Docker 核心工作流(微服务开发必用)

  1. 写代码
  2. 写 Dockerfile
  3. docker build 构建镜像
  4. docker push 推到镜像仓库(Harbor、Docker Hub、阿里云)
  5. 任何机器 docker run 直接运行
  6. 配合 Docker Compose / K8s 编排多服务

四、微服务开发最常用命令

基础

  • docker info:查看信息
  • docker images:查看镜像
  • docker ps:查看运行容器
  • docker ps -a:查看所有容器

构建与运行

  • docker build -t 服务名:版本 .
  • docker run -d -p 宿主机端口:容器端口 --name 容器名 镜像名

维护

  • docker logs 容器名:看日志(微服务排错必备)
  • docker exec -it 容器名 /bin/bash:进入容器
  • docker rm/rmi:删除容器 / 镜像

五、Docker Compose(微服务本地开发神器)

一个 docker-compose.yml 就能一键启动整套微服务依赖

  • MySQL
  • Redis
  • Nacos/Eureka
  • RabbitMQ/Kafka
  • 你的多个微服务

示例结构:

yaml

复制代码
version: '3'
services:
  mysql:
    image: mysql:8
    ports:
      - "3306:3306"
  redis:
    image: redis
  user-service:
    build: ./user-service
    ports:
      - "8080:8080"

启动:

plaintext

复制代码
docker-compose up -d

本地开发微服务联调最爽工具。


六、Docker 在微服务架构中的价值

  1. 环境一致性开发 / 测试 / 生产完全一样,解决 "我本地能跑"。

  2. 服务隔离每个微服务一个容器,互不干扰。

  3. 快速扩缩容秒级启动容器,适合流量波动。

  4. 标准化交付镜像 = 交付物,运维极其简单。

  5. 适配云原生Docker 是 K8s 的基础,是云原生微服务的基石。


七、微服务开发常见 Docker 场景

  • Spring Cloud / Spring Boot 服务容器化
  • 多服务本地快速启动(Compose)
  • 测试环境一键部署
  • CI/CD 流水线:Git 提交 → 自动构建镜像 → 自动部署
  • 与 K8s 结合做生产级编排

八、简单学习路线(你照着走就能上手)

  1. 安装 Docker
  2. 学会基础命令
  3. 给你的微服务写 Dockerfile
  4. 使用 Compose 启动整套依赖
  5. 学习镜像仓库、CI/CD
  6. 进阶:K8s
相关推荐
abigriver8 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
charlie1145141919 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记9 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
cen__y10 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
dapeng-大鹏12 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
乐维_lwops12 小时前
案例解读|运维监控助力某大型卷烟厂构建高效运维监控体系
运维·运维案例
JiaWen技术圈12 小时前
网站用户注册行为验证码方案
运维·安全
仙柒41513 小时前
Docker存储原理
运维·docker·容器
DolphinDB13 小时前
漫长人工,耗费存储?用 BackupRestore 模块一站式解决跨环境数据同步难题
运维·后端·架构
神奇椰子15 小时前
[特殊字符] 服务器搭建网站完整教程
运维·服务器