Docker入门指南:从基础概念到安装实战(超详细版)

初识Docker:基本概念及安装使用(巨详细版)

一、Docker核心概念解析

1.1 容器化技术的本质

容器化是一种轻量级的虚拟化技术,通过共享主机操作系统内核实现资源隔离。与虚拟机(VM)相比,容器不包含完整的操作系统,仅打包应用及其依赖,具有启动快(秒级)、资源占用低(MB级内存)、可移植性强等优势。典型应用场景包括微服务部署、持续集成/持续交付(CI/CD)、开发环境标准化等。

1.2 Docker三大核心组件

  • 镜像(Image):应用的只读模板,包含代码、运行时、系统工具等。通过分层存储机制实现复用,例如nginx:latest镜像可能包含Ubuntu基础层、Nginx软件层等。
  • 容器(Container):镜像的运行实例,通过docker run命令创建。每个容器拥有独立进程空间、网络栈和文件系统,但共享主机内核。
  • 仓库(Registry):镜像存储库,分为公有(如Docker Hub)和私有(如Harbor)。通过docker pull/push命令实现镜像下载与上传。

1.3 Docker架构与工作原理

Docker采用C/S架构,核心组件包括:

  • Docker Daemon:后台服务,负责容器创建、网络管理等。
  • Docker CLI:命令行工具,通过REST API与Daemon通信。
  • Docker Object:镜像、容器、网络等资源的抽象。

工作流示例:用户执行docker run -d nginx时,CLI请求Daemon检查本地是否存在nginx镜像,若不存在则从Registry拉取,最后基于镜像创建容器并启动。

二、Docker安装全指南

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

  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-agent software-properties-common
  6. # 添加Docker官方GPG密钥
  7. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  8. # 添加稳定版仓库
  9. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  10. # 安装Docker CE
  11. sudo apt-get update
  12. sudo apt-get install docker-ce docker-ce-cli containerd.io
  13. # 验证安装
  14. sudo docker run hello-world

关键配置

  • 非root用户操作:将用户加入docker组(sudo usermod -aG docker $USER
  • 镜像加速:编辑/etc/docker/daemon.json添加国内源(如阿里云)
    1. {
    2. "registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]
    3. }

    重启服务:sudo systemctl restart docker

2.2 Windows/macOS安装

  • Windows:需Windows 10/11专业版或企业版,启用Hyper-V或WSL2后端。从Docker Desktop官网下载安装包,安装后通过GUI配置资源限制(CPU/内存)。
  • macOS:支持Intel和Apple Silicon芯片,安装后需在设置中分配至少4GB内存。推荐使用Homebrew安装:
    1. brew install --cask docker

2.3 安装后验证

执行以下命令检查状态:

  1. docker version # 查看客户端/服务端版本
  2. docker info # 显示系统信息(镜像数、容器数等)
  3. docker system df # 查看磁盘使用情况

三、Docker基础操作实战

3.1 镜像管理

  • 搜索镜像docker search nginx
  • 拉取镜像docker pull nginx:alpine(轻量版)
  • 查看本地镜像docker images
  • 删除镜像docker rmi nginx:alpine

3.2 容器生命周期

  • 创建并启动容器
    1. docker run -d --name mynginx -p 8080:80 nginx
    2. # -d: 后台运行
    3. # --name: 指定容器名
    4. # -p: 端口映射(主机:容器)
  • 进入容器
    1. docker exec -it mynginx bash # 交互式终端
  • 停止/启动容器
    1. docker stop mynginx
    2. docker start mynginx
  • 删除容器
    1. docker rm mynginx # 需先停止
    2. docker rm -f mynginx # 强制删除运行中容器

3.3 数据持久化

  • 绑定挂载:将主机目录映射到容器
    1. docker run -v /host/path:/container/path nginx
  • 卷管理
    1. docker volume create myvol
    2. docker run -v myvol:/data nginx

四、进阶实践建议

  1. 镜像优化:使用多阶段构建减少镜像体积。示例Dockerfile:
    ```dockerfile

    构建阶段

    FROM golang:1.18 AS builder
    WORKDIR /app
    COPY . .
    RUN go build -o myapp

运行阶段

FROM alpine:latest
COPY —from=builder /app/myapp .
CMD [“./myapp”]

  1. 2. **网络配置**:创建自定义网络实现容器间通信:
  2. ```bash
  3. docker network create mynet
  4. docker run --network=mynet -d nginx
  1. 安全实践
    • 避免以root用户运行容器
    • 定期更新基础镜像
    • 使用docker scan检查漏洞

五、常见问题解决方案

  • 端口冲突:检查netstat -tuln | grep 8080,修改-p参数或停止占用进程。
  • 镜像拉取慢:配置国内镜像源(如阿里云、腾讯云)。
  • 容器无法访问:检查安全组规则(云服务器)或防火墙设置(sudo ufw allow 8080)。

通过本文的系统学习,读者可掌握Docker从理论到实战的全流程,为后续的容器编排(如Kubernetes)学习打下坚实基础。建议从简单应用(如静态网站)开始实践,逐步过渡到复杂微服务架构。