Docker 完全指南:从入门到精通(2026最新版)

什么是 Docker?

Docker 是一个开源的容器化平台,让开发者可以将应用及其依赖打包成轻量级的容器。容器比传统虚拟机更轻量、启动更快、移植性更强。

为什么需要 Docker?

  • 环境一致性 - 开发、测试、生产环境完全一致
  • 快速部署 - 秒级启动容器
  • 资源隔离 - 容器之间相互隔离
  • 微服务架构 - 天然支持微服务

Docker 核心概念

1. 镜像(Image)

镜像是一个只读模板,用于创建容器。可以理解为"类的蓝图"。

# 查看镜像
docker images

# 拉取镜像
docker pull ubuntu:22.04

# 删除镜像
docker rmi ubuntu:22.04

2. 容器(Container)

容器是镜像的运行实例,可以理解为"类的实例"。

# 运行容器
docker run -it ubuntu:22.04 /bin/bash

# 后台运行容器
docker run -d -p 8080:80 nginx

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop container_id

# 删除容器
docker rm container_id

3. 仓库(Repository)

存放镜像的地方,最常用的是 Docker Hub。

# 登录 Docker Hub
docker login

# 推送镜像到仓库
docker push myimage:latest

# 从仓库拉取镜像
docker pull myimage:latest

Dockerfile 最佳实践

Dockerfile 是构建镜像的脚本文件。

# 使用官方基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制源代码
COPY . .

# 暴露端口
EXPOSE 3000

# 启动命令
CMD ["node", "server.js"]

Dockerfile 优化技巧

  • 减少镜像层数 - 合并 RUN 指令
  • 使用 .dockerignore - 排除不需要的文件
  • 使用多阶段构建 - 减小最终镜像体积
  • 按顺序放置指令 - 利用缓存

Docker Compose 编排多容器

Docker Compose 用于定义和运行多容器应用。

# docker-compose.yml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    depends_on:
      - redis
  
  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  redis_data:
# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 停止服务
docker-compose down

# 查看日志
docker-compose logs -f

数据卷管理

# 创建数据卷
docker volume create mydata

# 挂载数据卷
docker run -v mydata:/app/data nginx

# 绑定宿主机目录
docker run -v /host/path:/container/path nginx

网络配置

# 创建网络
docker network create mynetwork

# 运行容器并加入网络
docker run --network mynetwork -d nginx

# 查看网络详情
docker network inspect mynetwork

Docker 安全最佳实践

  • 以非 root 用户运行容器
  • 定期更新基础镜像
  • 使用扫描工具检查漏洞
  • 限制容器资源(CPU/内存)
  • 不要在容器中存储敏感信息

常用 Docker 命令速查

命令 说明
docker ps 查看运行中的容器
docker images 查看镜像列表
docker logs 查看容器日志
docker exec 进入容器执行命令
docker build 构建镜像
docker push 推送镜像
docker pull 拉取镜像

总结

Docker 是现代 DevOps 的基础设施,掌握 Docker 是每个开发者和运维人员的必备技能。本文涵盖了 Docker 的核心概念、常用命令、最佳实践,希望对你有所帮助。


参考资源:Docker 官方文档

发表回复

后才能评论