2026.05.18 云计算

docker微基础

云计算运维之docker

docker微基础
Docker 快速入门
快速入门指南

Docker
从零到上手

理解容器化原理,掌握核心概念与常用命令,学会把应用打包、运行、编排部署。

🐳 Docker 基础 安装 · 镜像 · 容器 · Compose 适合初学者
§ 01

什么是 Docker?

Docker 是一个容器化平台,把应用和它所有依赖打包成一个轻量、可移植的"容器"。容器在任何环境里运行效果完全一致——笔记本、服务器、云主机都没区别。

它解决的核心问题是那句经典借口:"在我机器上明明能跑啊"。

对比项Docker 容器传统虚拟机
启动速度秒级(<1s)分钟级
磁盘占用MB 级GB 级
系统内核与宿主机共享各自完整 OS
可移植性极高中等
隔离方式进程级隔离硬件级隔离

类比:容器就像标准集装箱——不管装什么货,船(服务器)只需支持标准接口,装卸统一处理。

§ 02

核心概念

🖼 镜像 Image

只读模板,包含代码、运行时和依赖。相当于"类",从它创建容器实例。

📦 容器 Container

镜像的运行实例。每个容器独立隔离,有自己的文件系统和网络。

📝 Dockerfile

构建镜像的"配方",声明式描述如何一层层组装出镜像。

🗄 仓库 Registry

存储和分发镜像的服务,Docker Hub 是最大的公共仓库。

💾 卷 Volume

容器外的持久化存储,容器删除后数据依然保留。

🌐 网络 Network

虚拟网络,让容器之间互通,并控制哪些端口对外暴露。

§ 03

安装 Docker

01

macOS / Windows

下载安装 Docker Desktop,含 Engine、CLI 和图形界面,开箱即用。访问 docker.com/products/docker-desktop 选对应系统版本。

02

Linux(官方脚本)

# 下载并运行官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 把当前用户加入 docker 组
sudo usermod -aG docker $USER
03

验证安装

docker --version
# Docker version 26.1.0, build a5ee5b1

docker run hello-world
# Hello from Docker! 安装成功。
§ 04

运行第一个容器

一条命令启动 Nginx Web 服务器:

docker run -d -p 8080:80 --name my-nginx nginx

-d 后台运行  ·  -p 8080:80 本机 8080 映射到容器 80 端口  ·  --name 给容器命名。打开浏览器访问 http://localhost:8080 即可看到欢迎页。

常用容器管理操作:

# 查看运行中的容器
docker ps

# 停止 / 重新启动
docker stop my-nginx
docker start my-nginx

# 进入容器内部(交互式 Shell)
docker exec -it my-nginx bash

# 实时查看日志
docker logs -f my-nginx

# 强制删除容器
docker rm -f my-nginx
§ 05

编写 Dockerfile

在项目根目录创建 Dockerfile,把应用打包成镜像。以 Node.js 为例:

# 1. 选择基础镜像(alpine 版体积小)
FROM node:20-alpine

# 2. 设置工作目录
WORKDIR /app

# 3. 先复制依赖文件,利用层缓存加速构建
COPY package*.json ./
RUN npm install --production

# 4. 复制项目代码
COPY . .

# 5. 声明容器对外端口
EXPOSE 3000

# 6. 容器启动命令
CMD ["node", "app.js"]
# 构建镜像,-t 指定名称与标签
docker build -t my-app:1.0 .

# 运行容器
docker run -d -p 3000:3000 my-app:1.0

为什么先 COPY package.json? Docker 按层缓存构建。只要 package.json 没改变,npm install 层直接复用缓存,不重新安装,大幅加快后续构建速度。

§ 06

Docker Compose

真实应用通常由多个服务组成——Web + 数据库 + 缓存。Compose 用一个 YAML 文件定义整套服务,一条命令全部启动。

# docker-compose.yml
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
    depends_on:
      - db
      - redis

  db:
    image: postgres:16-alpine
    volumes:
      - pg_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret

  redis:
    image: redis:7-alpine

volumes:
  pg_data:
# 一键启动所有服务(后台运行)
docker compose up -d

# 查看服务状态
docker compose ps

# 停止并清理(保留数据卷)
docker compose down

# 停止并删除数据卷
docker compose down -v
§ 07

常用命令速查

docker ps -a列出所有容器(含已停止)
docker images列出本地所有镜像
docker pull <image>从仓库拉取镜像
docker push <image>推送镜像到仓库
docker logs -f <name>实时跟踪容器日志
docker exec -it <name> sh进入容器交互式 Shell
docker inspect <name>查看容器或镜像详细信息
docker stats实时查看容器资源用量
docker volume ls列出所有数据卷
docker system prune清理未使用的资源(慎用)

下一步:研究多阶段构建(Multi-stage Build)来压缩镜像体积,或把镜像推送到 Docker Hub 与团队共享。