logo

Docker从入门到实战:核心概念与安装使用全解析

作者:公子世无双2025.10.10 18:32浏览量:6

简介:本文详细解析Docker核心概念、安装步骤及基础使用方法,帮助开发者快速掌握容器化技术,提升开发效率。

一、Docker简介:为什么需要容器化技术?

在传统开发模式中,开发环境与生产环境往往存在差异,导致”在我机器上能运行”的经典问题。Docker通过容器化技术,将应用及其依赖打包成独立的容器,实现”一次构建,到处运行”的目标。

1.1 容器化 vs 虚拟化

  • 虚拟化技术:通过Hypervisor层模拟完整操作系统,每个虚拟机占用大量资源(通常GB级)
  • 容器技术:共享主机内核,每个容器仅打包应用和必要依赖(通常MB级)
  • 性能对比:容器启动速度比虚拟机快10-100倍,资源消耗降低80%以上

1.2 Docker核心优势

  • 环境一致性:开发、测试、生产环境完全一致
  • 资源高效:单台物理机可运行数百个容器
  • 快速部署:秒级启动容器,支持弹性扩展
  • 生态丰富:Docker Hub提供超过300万个镜像

二、Docker核心概念解析

2.1 镜像(Image)

  • 定义:只读模板,包含运行应用所需的一切(代码、运行时、系统工具等)
  • 分层结构:采用联合文件系统(UnionFS),每个指令创建一个镜像层
  • 示例docker pull ubuntu:22.04 下载Ubuntu 22.04基础镜像
  • 最佳实践
    • 使用.dockerignore文件排除无关文件
    • 多阶段构建减少最终镜像大小
    • 优先使用官方基础镜像

2.2 容器(Container)

  • 定义:镜像的运行实例,是独立的进程空间
  • 生命周期:创建→启动→运行→停止→删除
  • 常用命令
    1. docker run -d --name myapp -p 8080:80 nginx # 后台运行nginx容器
    2. docker exec -it myapp bash # 进入容器
    3. docker stop myapp # 停止容器
    4. docker rm myapp # 删除容器

2.3 仓库(Registry)

  • 定义:集中存储和分发镜像的服务
  • 主流仓库
    • Docker Hub(官方)
    • 私有仓库(如Harbor、Nexus)
    • 云服务商容器镜像服务
  • 安全实践
    • 使用docker login认证
    • 扫描镜像漏洞(如Trivy工具)
    • 签名验证(Docker Content Trust)

三、Docker安装指南(Linux版)

3.1 系统要求

  • 64位CPU,支持虚拟化(Intel VT-x/AMD-V)
  • Linux内核≥3.10(推荐4.x+)
  • 推荐配置:2GB+内存,20GB+磁盘空间

3.2 安装步骤(Ubuntu示例)

3.2.1 卸载旧版本

  1. sudo apt-get remove docker docker-engine docker.io containerd runc

3.2.2 安装依赖

  1. sudo apt-get update
  2. sudo apt-get install -y \
  3. apt-transport-https \
  4. ca-certificates \
  5. curl \
  6. gnupg \
  7. lsb-release

3.2.3 添加Docker官方GPG密钥

  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3.2.4 设置稳定版仓库

  1. echo \
  2. "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  3. $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3.2.5 安装Docker引擎

  1. sudo apt-get update
  2. sudo apt-get install -y docker-ce docker-ce-cli containerd.io

3.2.6 验证安装

  1. sudo docker run --rm hello-world
  2. # 输出应包含"Hello from Docker!"

3.3 配置非root用户使用

  1. sudo groupadd docker
  2. sudo usermod -aG docker $USER
  3. newgrp docker # 立即生效

四、Docker基础操作实战

4.1 运行第一个容器

  1. # 运行交互式Ubuntu容器
  2. docker run -it --rm ubuntu bash
  3. # 运行后台服务容器
  4. docker run -d --name web -p 80:80 nginx

4.2 镜像管理

  1. # 搜索镜像
  2. docker search nginx
  3. # 拉取镜像
  4. docker pull alpine:latest
  5. # 查看本地镜像
  6. docker images
  7. # 删除镜像
  8. docker rmi alpine:latest

4.3 容器生命周期管理

  1. # 查看运行中容器
  2. docker ps
  3. # 查看所有容器(包括停止的)
  4. docker ps -a
  5. # 停止容器
  6. docker stop web
  7. # 启动已停止容器
  8. docker start web
  9. # 重启容器
  10. docker restart web
  11. # 删除容器(需先停止)
  12. docker rm web

4.4 数据持久化

4.4.1 绑定挂载(Bind Mount)

  1. docker run -v /host/path:/container/path ubuntu

4.4.2 卷管理(Volume)

  1. # 创建卷
  2. docker volume create myvol
  3. # 使用卷
  4. docker run -v myvol:/data ubuntu
  5. # 查看卷
  6. docker volume ls

五、Dockerfile基础

5.1 基本结构

  1. # 基础镜像
  2. FROM ubuntu:22.04
  3. # 维护者信息(已废弃,推荐使用LABEL)
  4. LABEL maintainer="dev@example.com"
  5. # 环境变量
  6. ENV NODE_VERSION=18.12.0
  7. # 安装依赖
  8. RUN apt-get update && \
  9. apt-get install -y curl && \
  10. curl -fsSL https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - && \
  11. apt-get install -y nodejs
  12. # 复制文件
  13. COPY app /app
  14. # 工作目录
  15. WORKDIR /app
  16. # 暴露端口
  17. EXPOSE 3000
  18. # 启动命令
  19. CMD ["node", "server.js"]

5.2 构建镜像

  1. docker build -t myapp:1.0 .

5.3 多阶段构建示例

  1. # 构建阶段
  2. FROM golang:1.19 AS builder
  3. WORKDIR /app
  4. COPY . .
  5. RUN go build -o myapp
  6. # 运行阶段
  7. FROM alpine:latest
  8. WORKDIR /root/
  9. COPY --from=builder /app/myapp .
  10. CMD ["./myapp"]

六、Docker Compose入门

6.1 安装Docker Compose

  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose

6.2 示例compose文件

  1. version: '3.8'
  2. services:
  3. web:
  4. image: nginx:latest
  5. ports:
  6. - "80:80"
  7. volumes:
  8. - ./html:/usr/share/nginx/html
  9. db:
  10. image: mysql:8.0
  11. environment:
  12. MYSQL_ROOT_PASSWORD: example
  13. MYSQL_DATABASE: mydb
  14. volumes:
  15. - db_data:/var/lib/mysql
  16. volumes:
  17. db_data:

6.3 常用命令

  1. # 启动服务
  2. docker-compose up -d
  3. # 停止服务
  4. docker-compose down
  5. # 查看服务状态
  6. docker-compose ps
  7. # 构建并启动(有Dockerfile时)
  8. docker-compose up --build

七、进阶建议

  1. 镜像优化

    • 使用docker history分析镜像层
    • 合并多个RUN指令减少层数
    • 选择更小的基础镜像(如alpine)
  2. 安全实践

    • 定期更新基础镜像
    • 使用非root用户运行容器
    • 限制容器资源(CPU/内存)
  3. 监控方案

    • docker stats实时监控
    • Prometheus+Grafana监控方案
    • cAdvisor容器监控工具
  4. 网络配置

    • 自定义网络docker network create
    • 容器间通信使用服务名
    • 暴露端口时注意主机端口冲突

通过本文的详细讲解,您已经掌握了Docker的核心概念、安装方法和基础使用技巧。建议从简单的容器运行开始,逐步尝试构建自定义镜像和使用Docker Compose管理多容器应用。随着实践的深入,您将发现Docker在提高开发效率、保障环境一致性和实现快速部署方面的巨大价值。

相关文章推荐

发表评论

活动