Docker入门到实践(一):从零开始掌握Docker简介与安装

一、Docker技术核心解析

1.1 容器化技术的演进

容器化技术起源于2000年代初的FreeBSD Jails,2008年LXC(Linux Containers)的诞生为容器化奠定了基础。Docker在2013年横空出世,通过三大创新彻底改变了开发运维模式:

  • 标准化打包:将应用及其依赖封装为镜像(Image),解决环境差异问题
  • 轻量级虚拟化:基于Linux内核的cgroups和namespaces实现资源隔离,相比传统虚拟机减少90%资源占用
  • 分层存储机制:采用UnionFS实现镜像层叠构建,典型镜像如Nginx仅20MB,而虚拟机镜像常达数GB

1.2 Docker核心组件

组件 功能描述 典型应用场景
Docker Daemon 后台服务进程,管理容器生命周期 容器创建、网络配置、存储挂载
Docker Client 命令行工具,通过REST API与Daemon交互 镜像构建、容器启停、日志查看
Docker Image 只读模板,包含应用代码和运行环境 持续集成中的环境标准化
Docker Container 镜像的运行实例,可读写层叠加 微服务部署、临时测试环境
Docker Registry 镜像存储仓库,支持私有/公有部署 内部镜像分发、版本管理

二、Docker安装全攻略

2.1 系统要求验证

  • Linux系统:需内核版本≥3.10(通过uname -r验证)
  • 内存要求:建议≥2GB(生产环境推荐4GB+)
  • 存储空间:/var/lib/docker目录需≥20GB
  • 网络配置:确保能访问Docker Hub(https://hub.docker.com)

2.2 三大主流系统安装方案

2.2.1 Ubuntu/Debian安装

  1. # 卸载旧版本(如有)
  2. sudo apt-get remove docker docker-engine docker.io containerd runc
  3. # 安装依赖
  4. sudo apt-get update
  5. sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  6. # 添加GPG密钥
  7. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  8. # 添加稳定版仓库
  9. echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  10. # 安装Docker引擎
  11. sudo apt-get update
  12. sudo apt-get install docker-ce docker-ce-cli containerd.io
  13. # 验证安装
  14. sudo docker run hello-world

2.2.2 CentOS/RHEL安装

  1. # 卸载旧版本
  2. sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  3. # 安装依赖
  4. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  5. # 添加仓库
  6. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. # 安装Docker CE
  8. sudo yum install docker-ce docker-ce-cli containerd.io
  9. # 启动服务
  10. sudo systemctl start docker
  11. sudo systemctl enable docker

2.2.3 Windows/macOS安装

Windows要求

  • Win10 64位专业版/企业版/教育版(Build 16299+)
  • 启用Hyper-V或WSL2后端

macOS要求

  • macOS 10.15+(Catalina及以上)
  • 至少4GB内存

安装步骤

  1. 下载Docker Desktop安装包
  2. 双击安装,拖拽到Applications
  3. 启动后配置:
    • 资源限制:建议4核CPU/8GB内存
    • 共享驱动器:添加项目目录
    • 镜像加速:配置国内镜像源(如阿里云)

2.3 安装后验证与配置

2.3.1 基础验证

  1. # 检查Docker版本
  2. docker --version
  3. # 运行测试容器
  4. docker run --rm alpine echo "Hello Docker"
  5. # 查看运行中容器
  6. docker ps

2.3.2 关键配置优化

  1. 镜像加速配置(以阿里云为例):

    1. {
    2. "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
    3. }

    配置文件路径:

    • Linux: /etc/docker/daemon.json
    • Windows/macOS: Docker Desktop设置→Docker Engine
  2. 存储驱动选择

    • overlay2(默认,推荐)
    • btrfs/zfs(需内核支持)
    • 配置方式:在daemon.json中添加"storage-driver": "overlay2"
  3. 日志驱动配置

    1. {
    2. "log-driver": "json-file",
    3. "log-opts": {
    4. "max-size": "10m",
    5. "max-file": "3"
    6. }
    7. }

三、Docker基础操作实践

3.1 镜像管理命令

  1. # 搜索镜像
  2. docker search nginx
  3. # 拉取镜像
  4. docker pull nginx:latest
  5. # 查看本地镜像
  6. docker images
  7. # 删除镜像
  8. docker rmi nginx:latest
  9. # 保存镜像到文件
  10. docker save -o nginx.tar nginx:latest
  11. # 从文件加载镜像
  12. docker load -i nginx.tar

3.2 容器生命周期管理

  1. # 运行容器(前台模式)
  2. docker run -it --name mynginx nginx /bin/bash
  3. # 运行容器(后台模式)
  4. docker run -d --name web nginx
  5. # 进入运行中容器
  6. docker exec -it web /bin/bash
  7. # 停止/启动容器
  8. docker stop web
  9. docker start web
  10. # 查看容器日志
  11. docker logs -f web
  12. # 删除容器
  13. docker rm -f web

3.3 典型应用场景

3.3.1 开发环境隔离

  1. # 运行带端口映射的MySQL
  2. docker run -d \
  3. --name mysql \
  4. -e MYSQL_ROOT_PASSWORD=123456 \
  5. -p 3306:3306 \
  6. -v /data/mysql:/var/lib/mysql \
  7. mysql:5.7

3.3.2 持续集成环境

  1. # Dockerfile示例
  2. FROM python:3.9-slim
  3. WORKDIR /app
  4. COPY requirements.txt .
  5. RUN pip install --no-cache-dir -r requirements.txt
  6. COPY . .
  7. CMD ["python", "app.py"]

构建命令:

  1. docker build -t myapp .

四、常见问题解决方案

4.1 安装失败排查

  1. 内核版本过低

    • 解决方案:升级内核或使用CentOS 7+
    • 验证命令:uname -r
  2. 端口冲突

    • 典型错误:Bind for 0.0.0.0:2375 failed
    • 解决方案:修改Docker默认端口或停止冲突服务
  3. 存储空间不足

    • 清理命令:
      1. docker system prune -a
      2. docker volume prune

4.2 性能优化建议

  1. 资源限制配置

    1. docker run -it --memory="1g" --cpus="1.5" ubuntu /bin/bash
  2. 镜像层优化

    • 合并RUN指令减少层数
    • 清理apt缓存:RUN apt-get update && apt-get install -y \ && rm -rf /var/lib/apt/lists/*
  3. 网络模式选择

    • 默认bridge模式
    • host模式(跳过网络隔离)
    • 自定义bridge网络

五、进阶学习路径

  1. 容器编排:学习Docker Compose(v3语法)
  2. 集群管理:探索Swarm模式或Kubernetes
  3. 安全实践:掌握镜像签名、Secret管理、网络策略
  4. 监控方案:集成Prometheus+Grafana监控容器指标

通过本文的系统学习,开发者已具备Docker的基础操作能力。建议后续通过实际项目练习,逐步掌握容器化部署的全流程。下一期将深入讲解Dockerfile最佳实践与镜像构建优化技巧。