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

一、Docker简介:重新定义应用交付方式

1.1 容器化技术的崛起背景

传统软件开发面临”环境地狱”问题:同一套代码在不同机器上运行时,可能因操作系统版本、依赖库差异、配置文件冲突导致无法运行。虚拟机(VM)通过硬件虚拟化解决了部分问题,但存在资源占用高(需模拟完整OS)、启动慢(分钟级)、镜像臃肿(GB级)等缺陷。

2013年诞生的Docker引入容器化技术,通过Linux内核的cgroupsnamespaces实现进程级隔离。容器共享宿主机的内核空间,无需独立操作系统,将资源占用降低90%(镜像通常MB级),启动速度提升至秒级,完美解决了开发与运维环境一致性的痛点。

1.2 Docker核心架构解析

Docker采用客户端-服务端(C/S)架构:

  • Docker Daemon:后台服务进程,负责镜像构建、容器运行等核心操作
  • Docker Client:命令行工具(CLI),通过REST API与Daemon交互
  • Docker Image:只读模板,包含应用代码、运行时、系统工具等
  • Docker Container:Image的运行实例,通过写时复制(Copy-on-Write)机制实现高效修改

典型工作流程:开发人员通过Dockerfile定义应用环境→构建成Image→推送到Registry(如Docker Hub)→运维人员拉取Image并运行成Container。这种”Build once, Run anywhere”的特性,使Docker成为CI/CD流水线的标准组件。

1.3 与传统虚拟化的对比

特性 Docker容器 虚拟机(VM)
隔离级别 进程级 硬件级
启动速度 秒级 分钟级
镜像大小 MB级 GB级
性能损耗 1-5% 5-15%
跨平台性 依赖Linux内核 全虚拟化

二、Docker安装指南:三步完成环境部署

2.1 系统要求验证

  • 操作系统:Linux(推荐Ubuntu 20.04+/CentOS 7+)、macOS 10.15+、Windows 10/11 Pro及以上版本
  • 硬件配置:至少2GB内存(建议4GB+),20GB可用磁盘空间
  • 内核版本:Linux需3.10+(通过uname -r查看)

2.2 Linux系统安装(以Ubuntu为例)

步骤1:卸载旧版本

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

步骤2:安装依赖包

  1. sudo apt-get update
  2. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

步骤3:添加Docker官方GPG密钥

  1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

步骤4:设置稳定版仓库

  1. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

步骤5:安装Docker引擎

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

验证安装

  1. sudo docker run hello-world
  2. # 输出"Hello from Docker!"表示安装成功

2.3 Windows/macOS安装

Windows安装

  1. 确保系统版本为Windows 10/11 Pro/Enterprise/Education
  2. 下载Docker Desktop for Windows
  3. 启用Hyper-V(管理员权限运行):
    1. dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
  4. 安装后通过右键菜单选择”Switch to Windows containers”切换模式

macOS安装

  1. 下载Docker Desktop for Mac
  2. 要求macOS 10.15+且至少4GB内存
  3. 安装后通过菜单栏Docker图标管理状态

2.4 配置国内镜像加速(关键优化)

由于Docker Hub在国内访问不稳定,建议配置镜像加速器:

  1. // 编辑/etc/docker/daemon.jsonLinux)或Docker Desktop设置
  2. {
  3. "registry-mirrors": [
  4. "https://registry.docker-cn.com",
  5. "https://mirror.baidubce.com"
  6. ]
  7. }

重启服务后验证:

  1. sudo systemctl restart docker
  2. docker info | grep "Registry Mirrors" -A 5

三、Docker基础操作实战

3.1 第一个Docker容器

  1. # 运行Nginx容器并映射端口
  2. docker run -d -p 8080:80 --name my-nginx nginx
  3. # 查看运行中容器
  4. docker ps
  5. # 访问测试
  6. curl http://localhost:8080

3.2 镜像管理命令

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

3.3 容器生命周期管理

  1. # 启动/停止容器
  2. docker start/stop my-nginx
  3. # 进入运行中容器
  4. docker exec -it my-nginx bash
  5. # 查看容器日志
  6. docker logs -f my-nginx
  7. # 删除停止的容器
  8. docker rm my-nginx

四、最佳实践建议

  1. 非root用户操作:将当前用户加入docker组避免sudo

    1. sudo usermod -aG docker $USER
    2. newgrp docker # 立即生效
  2. 资源限制:生产环境需设置CPU/内存限制

    1. docker run -it --memory="1g" --cpus="1.5" ubuntu bash
  3. 数据持久化:使用卷(Volume)存储重要数据

    1. docker volume create my-vol
    2. docker run -v my-vol:/data --name data-container ubuntu
  4. 安全加固

    • 定期更新镜像(docker pull最新版本)
    • 避免以root用户运行容器
    • 使用--read-only参数挂载只读文件系统

五、常见问题解决方案

Q1:Docker服务启动失败

  • 检查端口占用:netstat -tulnp | grep 2375
  • 查看日志:journalctl -u docker.service

Q2:镜像拉取超时

  • 修改/etc/docker/daemon.json添加多个mirror
  • 使用--registry-mirror参数临时指定

Q3:容器内无法访问互联网

  • 检查宿主机DNS配置
  • 运行容器时添加--dns 8.8.8.8参数

通过本文的系统学习,开发者已掌握Docker的核心概念与基础操作。后续章节将深入讲解Dockerfile编写、Docker Compose编排、Kubernetes集成等高级主题,助力读者构建现代化的云原生应用架构。