Docker 完全学习手册

合并自「Docker 快速学习」笔记 + gin-demo 项目 index.html 知识库,涵盖从入门到生产的全部核心内容。


目录

  1. 核心概念(先搞懂 3 个核心)
  2. Docker 安装与基础环境
  3. 高频命令(分模块记忆,日常 90% 操作)
  4. Dockerfile 镜像构建
  5. Docker Compose 多容器编排
  6. 镜像仓库分发
  7. 生产最佳实践
  8. Docker 与 K8s 区别
  9. 学习路线(快速上手顺序)
  10. 附加:常用命令速查表

一、核心概念(先搞懂 3 个核心)

1. 什么是 Docker

  • 轻量级容器化工具,一次打包,到处运行
  • 隔离应用环境:解决"本地能跑,服务器报错"的环境不一致问题
  • 对比虚拟机:VM 需完整操作系统,Docker 共享宿主机内核,启动秒级、体积极小
对比维度 Docker 容器 虚拟机 (VM)
启动速度 秒级 / 毫秒级 分钟级
资源占用 MB 级别,共享宿主机内核 GB 级别,需完整 OS
隔离级别 进程级隔离 (Namespace + Cgroup) 硬件级隔离 (Hypervisor)
镜像大小 通常几十 MB ~ 几百 MB 通常几 GB
迁移性 跨平台一致运行 依赖 Hypervisor 类型
密度 单机可运行数百个容器 单机通常十几个 VM

Docker 是一款基于 Go 语言开发的开源容器化引擎,2013 年由 dotCloud 公司(后更名为 Docker Inc.)发布。核心思想是将应用程序、运行时依赖、系统库、环境变量、配置文件等打包成一个标准化的容器镜像,实现"一次构建、随处运行"。

2. 三大核心对象

对象 比喻 说明
镜像 (Image) 安装包 / 模板 只读模板,包含代码、运行环境、依赖、配置;分层存储,可复用
容器 (Container) 程序进程 镜像的运行实例,可写层,删除容器数据丢失(需挂载持久化)
仓库 (Registry) 应用商店 存放镜像的服务器,官方公共仓库:Docker Hub

镜像分层示意:

┌──────────────────────┐
│  可写容器层 (RW)      │  ← 容器运行时新增/修改的数据
├──────────────────────┤
│  第3层: COPY ./app    │  ← 应用代码
├──────────────────────┤
│  第2层: RUN pip install│ ← 依赖安装
├──────────────────────┤
│  第1层: FROM python:3 │  ← 基础镜像层(只读)
└──────────────────────┘

容器生命周期:created → running → paused → stopped → deleted

容器 vs 镜像关系:

  • 容器在镜像只读层之上添加一个可写容器层
  • 采用**写时复制 (Copy-on-Write)**策略:修改文件时先将文件从只读层复制到可写层再修改

3. 底层隔离技术

技术 作用
Namespace(命名空间) 进程、网络、用户、挂载等资源隔离(PID、NET、IPC、MNT、UTS、USER)
Cgroups(控制组) 限制容器 CPU、内存、磁盘 IO 资源
Union FS(联合文件系统) 镜像分层存储,复用底层层,节省空间。推荐 overlay2 驱动

二、Docker 安装与基础环境

1. 组件构成

组件 说明
Docker Engine 核心引擎
Docker CLI 命令行工具,日常操作入口
Docker Daemon (dockerd) 后台守护进程,接收 CLI 指令管理容器
Docker Compose 多容器编排(本地开发必用)
Docker Desktop Windows/Mac 可视化桌面(内置 docker + compose)

Docker 采用 Client-Server 架构:Docker Client 通过 REST API 与 Docker Daemon 通信。

2. Linux 安装

CentOS 7:

# 卸载旧版本
sudo yum remove docker docker-common docker-selinux docker-engine

# 安装依赖 & 添加 yum 源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

Ubuntu:

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

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

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker

3. 镜像加速(必配)

国内服务器配置镜像加速器,解决拉取镜像慢的问题。编辑 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

重启生效:

sudo systemctl daemon-reload && sudo systemctl restart docker

4. Compose V2 安装

sudo apt update
sudo apt install docker-compose-plugin -y

# 验证
docker compose version

注意: 新版 Compose V2(docker compose,空格)是 Docker CLI 插件,Go 语言重写,速度快。旧版 V1(docker-compose,横杠)已废弃。


三、高频命令(分模块记忆,日常 90% 操作)

1. 镜像操作

# 拉取镜像
docker pull nginx
docker pull nginx:1.25-alpine      # 指定版本

# 查看本地镜像
docker images
docker image ls -a                  # 包含中间层镜像

# 删除镜像
docker rmi 镜像ID/名称
docker image prune -a               # 删除所有未使用的镜像

# 搜索镜像
docker search mysql

# 查看镜像详情
docker inspect nginx:latest         # 完整 JSON 信息
docker history nginx:latest         # 查看构建历史(每一层大小)

# 镜像打包导出/导入
docker save -o nginx.tar nginx
docker load -i nginx.tar

# 给镜像打标签
docker tag nginx:latest myrepo/nginx:v1.0

# 推送镜像到仓库
docker push myrepo/nginx:v1.0

# 根据容器生成新镜像
docker commit 容器ID 新镜像名:版本

镜像命名规范: [registry/][namespace/]name:tag

  • nginx:1.25-alpine — 官方镜像(省略 registry)
  • myrepo.com/project/app:v2.0 — 私有仓库镜像
  • ⚠️ 生产环境务必指定明确版本号,不要用 :latest

2. 容器操作(最常用)

docker run 常用参数速记
参数 说明
-d 后台运行
--name 指定容器名
-p 宿主机端口:容器端口 端口映射
-v 数据挂载
--restart=always 开机自启
-e 设置环境变量
--network 指定网络
--rm 退出时自动删除
-m / --cpus 内存/CPU 限制

重启策略:

策略 说明
no 默认,不自动重启
always 总是重启(Docker 启动时也会重启)
on-failure[:N] 仅非零退出码时重启,可指定最大重试次数
unless-stopped 除手动停止外总是重启

常用命令:

# 创建并启动容器
docker run -d --name nginx-demo -p 8080:80 nginx

# 查看运行中容器
docker ps

# 查看所有容器(含停止)
docker ps -a

# 停止/启动/重启容器
docker stop/start/restart 容器名/ID

# 暂停/恢复
docker pause web
docker unpause web

# 删除容器(必须先停止)
docker rm 容器ID
docker rm -f 容器ID                 # 强制删除运行中容器
docker container prune                # 删除所有已停止容器

# 进入容器终端
docker exec -it 容器ID /bin/sh        # 推荐:开启新进程
docker attach 容器ID                  # 不推荐:连主进程

# 查看容器日志
docker logs -f 容器名
docker logs --tail 100 web            # 最后100行
docker logs --since 30m web           # 最近30分钟

# 拷贝文件 宿主机<->容器
docker cp 宿主机路径 容器ID:容器路径
docker cp 容器ID:/app/logs ./logs/

# 查看容器详情
docker inspect web                    # 完整 JSON
docker port web                       # 端口映射
docker top web                        # 容器内进程列表

# 实时资源监控
docker stats
docker stats --no-stream              # 快照模式

3. 数据持久化(3 种挂载方式)

方式 特点 适用场景
bind mount 宿主机指定目录直接映射容器,-v /host/path:/container/path 开发环境
volume(推荐) Docker 管理的独立目录,生命周期独立于容器,-v 卷名:/容器路径 生产环境
tmpfs 内存存储,容器销毁数据清空 临时敏感数据

对比两种 -v 写法:

  • -v /宿主机绝对路径:/容器路径 → bind mount 绑定挂载(开发本地代码)
  • -v 数据卷名称:/容器路径 → docker volume 数据卷(生产持久存储推荐)

示例1:bind mount 绑定挂载
docker run -d --name nginx-web -p 8080:80 \
  -v /home/dev/project:/usr/share/nginx/html \
  --restart unless-stopped nginx

验证步骤:

  1. 给 /home/dev/project 权限设为 777(根据实际情况调整)
  2. 把写好的 index.html 上传到这个文件夹
  3. 浏览器访问即可看到新页面(如看不到,Ctrl+F5 强制刷新,或进入容器检查内容是否传输过来)

示例2:Volume 数据卷(推荐,生产级)

一、Volume 是什么

Volume 是 Docker 自身管理的持久化存储目录,存放在宿主机 Docker 专属目录(Linux 默认:/var/lib/docker/volumes/),完全由 Docker 接管,生命周期独立于容器:

  • 删除容器不会自动删除 Volume,数据永久保留
  • 适合生产持久化(数据库、静态资源、日志)

与 Bind Mount 的核心区别:

维度 Bind Mount Volume(推荐)
路径管理 手动指定宿主机任意目录 Docker 统一管理,无需关心真实路径
权限兼容 依赖宿主机目录结构和权限 跨平台统一,权限兼容性更好
生命周期 与宿主机目录耦合 容器删除卷数据仍保留
适用场景 本地开发挂载代码 数据库、业务持久数据

二、Volume 基础命令

# 创建命名卷
docker volume create nginx-html

# 查看所有卷
docker volume ls

# 查看卷详细信息(真实宿主机路径)
docker volume inspect nginx-html

# 删除指定卷(无容器使用时才能删)
docker volume rm nginx-html

# 清理所有未使用的卷
docker volume prune

三、使用 Volume 启动 Nginx

docker run -d --name nginx-web -p 8080:80 \
  -v nginx-html:/usr/share/nginx/html \
  --restart unless-stopped nginx

-v 卷名:容器内路径:nginx-html 是 Docker 管理的数据卷,不写宿主机绝对路径。不用事先创建 nginx-html,直接运行命令即可。

四、往 Volume 里写入 index.html

方式1:临时容器复制文件进卷

docker run --rm \
  -v /home/dev/project:/source \
  -v nginx-html:/target \
  alpine cp /source/index.html /target/

方式2:直接复制到卷的宿主机路径

# 先查看卷的真实路径
docker volume inspect nginx-html
# 然后将 index.html 复制到 /var/lib/docker/volumes/nginx-html/_data/

方式3:进入容器直接编辑

docker exec -it nginx-web bash
vi /usr/share/nginx/html/index.html

五、Volume 核心优势

  • 解耦容器与宿主机目录,不用手动管理宿主机文件夹
  • 容器删除,数据卷依然存在,新容器可直接复用数据
  • 支持多容器共享同一个 Volume(多容器读写同一份数据)
  • Docker 提供完整生命周期命令:创建、查看、清理、备份
  • 镜像打包、迁移更友好,不受宿主机路径限制

六、问题排查

进入容器检查 /usr/share/nginx/html 下的 index.html 文件内容是否变更为我们创建的:

docker exec -it nginx-web bash
cat /usr/share/nginx/html/index.html

4. Docker 网络(4 种默认驱动)

驱动 说明 使用场景
bridge 默认,同一宿主机容器互通,外部需端口映射 单机容器通信
host 共享宿主机网络,无需 -p 端口映射,性能最好 高性能场景
none 无网络,仅 lo 接口 安全隔离场景
overlay 跨主机集群网络(Swarm),基于 VXLAN 跨主机通信
macvlan 为容器分配物理 MAC 地址 需直接连接物理网络
ipvlan 类似 macvlan,共享 MAC 但不同 IP MAC 地址受限环境

网络管理命令:

# 查看所有网络
docker network ls

# 创建自定义 bridge 网络
docker network create my-bridge

# 自定义网络(推荐替代默认 bridge,支持 DNS 容器名解析)
docker network create --driver bridge dev-net

# 启动容器时指定网络
docker run --network=host xxx
docker run --network=none xxx
docker run --network=my-bridge xxx

# 容器加入自定义网络,容器名直接互通
docker run --network dev-net --name mysql -p 3306:3306 mysql
docker run --network dev-net --name backend -p 8080:8080 my-server
# backend 容器内直接 ping mysql 就能连通

# 查看网络详情(含连接的容器 IP)
docker network inspect dev-net

# 将运行中容器连接到网络
docker network connect dev-net existing-container

# 断开网络
docker network disconnect dev-net container-name

# 删除网络
docker network rm dev-net
docker network prune        # 删除所有未使用的网络

端口映射 -p 详解:

-p 8080:80           → 主机 8080 → 容器 80 (TCP)
-p 8080:80/udp       → 仅 UDP
-p 0.0.0.0:8080:80   → 绑定所有网卡
-p 127.0.0.1:8080:80 → 仅本地访问
-p 8080-8090:80      → 主机 8080~8090 全部映射到 80

个人建议使用默认即可,如果需要优化建议使用自定义网络(也是基于 bridge 网络的)。


四、Dockerfile 镜像构建(核心,打包项目必备)

1. 常用指令(从上到下执行,分层缓存)

指令 作用 示例
FROM 基础镜像(必须第一行) FROM golang:1.21-alpine
WORKDIR 容器工作目录 WORKDIR /app
COPY 复制宿主机文件到容器 COPY ./app /app
ADD 同 COPY,支持自动解压压缩包 ADD archive.tar.gz /app/
RUN 构建镜像时执行命令(安装依赖) RUN apt update && apt install -y curl
ENV 设置环境变量 ENV APP_PORT=8080
ARG 构建时的参数(--build-arg ARG VERSION=1.0
EXPOSE 声明容器暴露端口(仅文档,不自动映射) EXPOSE 8080
CMD 容器启动默认命令(可被 docker run 覆盖) CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT 固定启动程序,CMD 传参 ENTRYPOINT ["/app/server"]
VOLUME 声明数据卷 VOLUME /data
USER 指定运行用户(避免 root) USER 1000:1000
HEALTHCHECK 定义容器健康检查 HEALTHCHECK CMD curl -f http://localhost/ || exit 1
SHELL 指定 RUN/CMD 使用的 Shell SHELL ["/bin/bash", "-c"]
STOPSIGNAL 指定停止信号 STOPSIGNAL SIGTERM

2. CMD vs ENTRYPOINT

组合 行为
仅 CMD docker run image cmd 会覆盖 CMD
仅 ENTRYPOINT CMD 作为 ENTRYPOINT 的默认参数
ENTRYPOINT + CMD CMD 提供默认参数,docker run image arg 可替换 CMD 参数

3. 构建镜像命令

# 末尾 . 代表当前上下文目录
docker build -t my-web:v1 .

# 指定 Dockerfile 路径
docker build -f Dockerfile.prod -t myapp:prod .

# 构建时传参 + 不使用缓存
docker build --build-arg VERSION=2.0 --no-cache -t myapp:v2.0 .

4. 多阶段构建(瘦身镜像,生产规范)

分构建阶段 + 运行阶段,只保留运行依赖,丢弃编译工具,镜像体积大幅缩小。示例(Go 项目通用):

# ========== 构建阶段 ==========
FROM golang:1.25-alpine AS builder
WORKDIR /build
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o /app/server .

# ========== 运行阶段 ==========
FROM alpine:3.21
WORKDIR /app
COPY --from=builder /app/server .
COPY --from=builder /build/templates ./templates
EXPOSE 8080
CMD ["/app/server"]

5. Dockerfile 编写最佳实践

  1. 使用官方基础镜像:优先选择 alpine 变体,镜像更小更安全
  2. 合并 RUN 指令:用 && 连接命令减少层数,在同层清理缓存
  3. COPY 优于 ADD:除非需要远程 URL 或自动解压,否则用 COPY
  4. 利用构建缓存:先 COPY 依赖文件(如 package.json / go.mod)再 RUN install,最后 COPY 代码
  5. 非 root 运行:创建专用用户 USER appuser,增强安全性
  6. 使用 .dockerignore:排除 .gitnode_modules、日志等无关文件,加速构建
  7. 多阶段构建:编译与运行分离,最终镜像仅包含必要产物
  8. 必须设置 HEALTHCHECK:便于编排系统判断容器健康状态

6. .dockerignore 模板

.git
.gitignore
node_modules
*.log
Dockerfile
docker-compose.yml
.vscode
.idea
*.md
Makefile

五、Docker Compose 多容器编排(本地开发神器)

1. 作用

单个 YAML 文件管理多个关联容器(如前端 + 后端 + MySQL + Redis),一键启停,不用手写一堆 docker run 参数。

2. 核心文件 docker-compose.yml

三层结构:servicesvolumesnetworks

version: "3.8"

services:
  # ---- 前端 ----
  frontend:
    build: ./frontend
    image: myapp-frontend:latest
    ports:
      - "80:80"
    depends_on:
      - backend
    networks:
      - app-net
    restart: unless-stopped

  # ---- 后端 API ----
  backend:
    build: ./backend
    image: myapp-backend:latest
    ports:
      - "3000:3000"
    environment:
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_USER=appuser
      - DB_PASSWORD=${DB_PASSWORD}
    env_file:
      - ./backend/.env
    volumes:
      - ./backend/uploads:/app/uploads
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    networks:
      - app-net
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 512M

  # ---- 数据库 ----
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres-data:/var/lib/postgresql/data
      - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "5432:5432"
    networks:
      - app-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U appuser -d myapp"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  # ---- 缓存 ----
  redis:
    image: redis:7-alpine
    command: redis-server --requirepass ${REDIS_PASSWORD} --maxmemory 256mb
    volumes:
      - redis-data:/data
    networks:
      - app-net
    restart: unless-stopped

# ---- 网络 ----
networks:
  app-net:
    driver: bridge

# ---- 数据卷 ----
volumes:
  postgres-data:
  redis-data:

3. 常用 compose 命令

# 启动所有服务(后台)
docker compose up -d

# 指定 compose 文件
docker compose -f docker-compose.prod.yml up -d

# 重新构建并启动
docker compose up -d --build

# 查看运行状态
docker compose ps

# 查看日志
docker compose logs -f
docker compose logs -f --tail 50 backend

# 进入服务容器
docker compose exec backend /bin/sh

# 运行一次性命令
docker compose run --rm backend python manage.py migrate

# 停止并删除容器(保留数据卷)
docker compose down

# 停止并删除容器 + 数据卷
docker compose down -v

# 同时删除镜像
docker compose down --rmi all

# 重启单个服务
docker compose restart backend

# 水平扩容
docker compose up -d --scale worker=3

4. .env 文件示例

# .env(与 docker-compose.yml 同目录自动加载)
TAG=v1.2.3
DB_PASSWORD=ChangeMe123!
REDIS_PASSWORD=RedisSecret456

Compose 适用场景: 本地开发环境搭建、单机多服务部署、CI/CD 测试环境。大规模生产集群推荐使用 Kubernetes


六、镜像仓库分发

仓库 说明
Docker Hub 公有仓库,官方公共镜像
Registry 简易私有库
Harbor 企业级(带权限、UI、镜像扫描)
# 登录/登出
docker login
docker logout

# 镜像打标签(推送私有库规范)
docker tag my-web:v1 192.168.1.100/library/my-web:v1

# 推送
docker push 192.168.1.100/library/my-web:v1

# 搭建私有仓库 (Registry)
docker run -d -p 5000:5000 --restart=always --name registry \
  -v /data/registry:/var/lib/registry registry:2

# 推送到私有仓库
docker tag myapp:v1.0 localhost:5000/myapp:v1.0
docker push localhost:5000/myapp:v1.0

Harbor 企业级功能:

  • 镜像漏洞扫描 (Trivy/Clair)
  • RBAC 权限管理和 LDAP 集成
  • 镜像复制与同步(跨数据中心)
  • 镜像签名与内容信任
  • Helm Chart 仓库
  • 垃圾回收与配额管理

七、生产最佳实践

  1. 镜像轻量化:使用 alpine 极简基础镜像、多阶段构建、清理缓存
    • 选最小基础镜像:alpine (~7MB) 或 scratch (空镜像)
    • 清理包管理器缓存:apt clean && rm -rf /var/lib/apt/lists/*
    • 使用 docker image prune 定期清理无用镜像
  2. 数据持久化:所有业务数据必须挂载 volume,禁止容器内存储
  3. 资源限制docker run 时增加 --memory--cpus 防止容器占满宿主机资源
  4. 安全
    • 容器非 root 用户运行(Dockerfile 中使用 USER 指令)
    • 使用 --read-only 只读根文件系统
    • 不要映射高危端口,私有仓库开启认证
    • 固定镜像版本:使用具体 tag,避免 :latest
    • 敏感信息用 Docker Secrets(Swarm)或外部 KMS,不要写死在镜像或环境变量
    • 镜像扫描:使用 docker scout、Trivy 或 Harbor 扫描漏洞
    • ⚠️ 常见隐患:以 root 运行容器、挂载 /var/run/docker.sock 到容器、暴露未加密端口
  5. 自启动:容器配置 --restart=always,服务器重启自动拉起
  6. 日志统一:挂载宿主机日志目录,对接 ELK 收集日志
  7. 磁盘管理:定期 docker system prune -a --volumes 一键清理

八、Docker 与 K8s 区别(分清定位)

维度 Docker Kubernetes (K8s)
定位 单机容器打包、运行工具 容器集群编排平台
规模 适合本地开发、单机部署 管理成千上万容器
核心能力 镜像构建、容器运行 扩缩容、自愈、负载均衡、服务发现、滚动更新
关系 K8s 底层默认使用 Docker 运行容器(新版支持 containerd 替代)

学习路线: Docker 是基础,K8s 是进阶。掌握 Docker 后主要学习 K8s。

Docker Swarm(内置集群编排,备选方案)

# 初始化 Swarm 集群
docker swarm init --advertise-addr 192.168.1.100

# 部署服务栈
docker stack deploy -c docker-compose.yml myapp

# 查看服务
docker service ls
docker service ps myapp_frontend

# 滚动更新
docker service update --image myapp:v2.0 myapp_frontend

九、学习路线(快速上手顺序)

  1. ✅ 理解镜像 / 容器 / 仓库基础概念
  2. ✅ 练熟 docker runpsexeclogsvolume 基础命令
  3. ✅ 手写 Dockerfile 打包自己项目(前端 / Java / Go 任选)
  4. ✅ 学习 Docker Compose 搭建多服务开发环境
  5. ✅ 掌握私有仓库 Harbor 镜像推送
  6. ⏭ 进阶:容器网络、资源限制、生产优化、K8s 衔接

附加:常用命令速查表

镜像 (Image)

命令 说明
docker images 列出本地镜像
docker pull <image> 拉取镜像
docker rmi <image> 删除镜像
docker tag src target 打标签
docker build -t name . 构建镜像
docker push <image> 推送镜像
docker history <image> 查看构建历史
docker save/load 导出/导入镜像
docker image prune -a 清理无用镜像

容器 (Container)

命令 说明
docker ps -a 列出所有容器
docker run -d --name n -p 80:80 img 启动容器
docker start/stop/restart n 启/停/重启
docker exec -it n /bin/sh 进入容器
docker logs -f n 查看日志
docker rm n 删除容器
docker inspect n 查看详情
docker stats 资源监控
docker cp file n:/path 拷贝文件
docker port n 查看端口映射

Compose

命令 说明
docker compose up -d 后台启动
docker compose ps 查看状态
docker compose logs -f 查看日志
docker compose exec srv sh 进入服务容器
docker compose down -v 停止并删除卷
docker compose restart srv 重启服务
docker compose build 构建镜像
docker compose run srv cmd 运行一次性命令

系统

命令 说明
docker version 查看版本
docker info 系统信息
docker system df 磁盘占用
docker system prune -a 全面清理
docker events 实时事件
docker login/logout 仓库登录/登出

日志与调试

命令 说明
docker logs --tail 100 --timestamps web 日志带时间戳
docker stats --no-stream 资源快照
docker top web 容器进程列表
docker diff web 容器文件变更 (A=新增 D=删除 C=修改)
docker events --filter container=web1 容器事件流
journalctl -u docker -f Docker 守护进程日志

推荐学习资源

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐