Skip to main content

Docker 基础详解

Docker 是一个开源的容器平台,能够将应用及其依赖打包成轻量级容器,实现跨环境运行与高效部署。


🚀 什么是 Docker?

Docker 提供操作系统级虚拟化,与传统虚拟机相比:

特性Docker 容器虚拟机
启动速度秒级分钟级
占用体积MB 级GB 级
隔离方式内核级别硬件级
启动方式直接运行镜像启动完整系统

🧱 核心概念

概念描述
镜像(Image)类似操作系统快照,用于创建容器
容器(Container)镜像的运行实例,轻量、隔离
Dockerfile用于构建镜像的脚本
Volume数据持久化机制
网络(Network)容器之间或与主机通信方式
Registry镜像仓库(如 Docker Hub、Harbor)

🧪 基本命令演示

# 查看版本
docker version

# 拉取镜像
docker pull nginx

# 运行容器并映射端口
docker run -d -p 8080:80 nginx

# 查看容器
docker ps -a

# 停止容器
docker stop <id>

# 删除容器
docker rm <id>

🧩 Dockerfile 示例

# 基础镜像
FROM node:18

# 设置工作目录
WORKDIR /app

# 拷贝依赖并安装
COPY package*.json ./
RUN npm install

# 拷贝代码
COPY . .

# 启动命令
CMD ["npm", "start"]

💾 数据卷 Volume

# 本地挂载示例
docker run -v /home/user/data:/data alpine

# 匿名卷
docker run -v /data alpine

# 指定卷名
docker volume create my-data
docker run -v my-data:/data alpine

🧰 Docker Compose 示例

version: "3"
services:
web:
image: nginx
ports:
- "80:80"
backend:
build: ./backend
ports:
- "3000:3000"
docker-compose up -d

🧠 常见网络模式

网络模式说明
bridge(默认)虚拟网桥,容器之间通信
host与宿主机共用网络
none无网络连接
overlay跨主机通信(Swarm/K8s)

🔐 Docker Tips

tip

推荐使用多阶段构建减少镜像体积,提高构建效率。

🔐 安全与权限实践

tip
  • 使用非 root 用户构建镜像
  • 限制容器功能:--cap-drop
  • 配置 seccomp/apparmor 规则

⚙️ Docker + CI/CD 示例(GitHub Actions)

- name: Build & Push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: myrepo/myapp:latest

适合部署到 Docker Hub、Harbor 等仓库。


🧪 在线练习平台推荐

平台描述
Play with Docker官方免费沙箱,支持真实终端练习
Katacoda Docker Scenarios交互式课程式训练平台
KodeKloud Docker Labs面向初学者的动手实验
ACloudGuru Docker Lab提供付费的实战环境
Docker Playground类似 sandbox 的交互体验

🧠 推荐学习路线

1. 基础阶段
  • 安装 Docker Desktop / Engine
  • 了解镜像与容器
  • 学会使用 Volume 和 Port 映射
2. 实战阶段
  • 编写 Dockerfile 构建 Node/Python 项目
  • 使用 docker-compose 管理前后端服务
  • 持久化日志、数据库文件
3. 进阶阶段
  • 镜像瘦身、多阶段构建
  • 安全配置、镜像扫描
  • 构建流水线 CI/CD(GitHub Actions, GitLab CI)
4. 运维部署阶段
  • 使用 Harbor 搭建私有仓库
  • 与 Kubernetes 协同部署
  • 使用 Prometheus + Grafana 监控容器状态

📚 延伸阅读


📚 延伸阅读