汇总 Docker 镜像与容器操作、Dockerfile 指令、多阶段构建、compose 编排、网络与卷以及排错命令,适合本地开发和部署上线时快速核对。

镜像与容器

镜像是只读模板,容器是运行实例;run 常用短横 d 后台、短横 p 映射端口、短横 v 挂载、短横 e 注入环境变量,exec 进容器排查。容器删掉后内部改动就没了,要留数据必须挂卷。

docker run -d -p 8080:80 nginx

Dockerfile 指令

基础镜像指令打底,工作目录指令设路径,复制与运行指令按层缓存;先单独拷依赖清单再装依赖,改代码时不必重装,默认进程用 CMD 指定。别用 latest 标签,构建结果将不可复现。

FROM php:8.3-fpm-alpine
WORKDIR /app

多阶段构建

用 AS 分阶段,最终镜像只从构建阶段拷产物,编译器和开发依赖不会进入运行时镜像,体积通常能减掉一大半。配合忽略文件排除依赖目录和版本库,构建上下文能小很多,推送也更快。

FROM node:22-alpine AS build

docker compose

一份文件编排多服务,依赖顺序参数控制启动先后,环境变量段注入配置,具名卷在卷段统一声明。顺序只保证启动先后,不保证服务已就绪,连接重试还得应用自己处理,别省这一步。

services:
  web:
    build: .

网络与卷

自定义网络让容器按服务名互访,具名卷由 Docker 管理适合存数据库,绑定挂载把宿主机目录映射进去适合本地改代码。默认桥接网络里容器只能靠 IP 互访,别把端口全暴露到宿主机上。

docker network create appnet

常用排错

按状态、日志、进容器、资源占用的顺序排查,inspect 看详细配置,compose config 校验语法,最后再清理无用镜像。启动即退出多半是主进程跑完,stats 能看是否内存打满被杀掉。

docker compose config