全部速查表

Docker 命令速查

日常高频 Docker CLI 命令快速参考:容器生命周期、镜像构建、日志/Exec、网络、卷、Compose、镜像仓库与清理维护,并附带常用参数和实操示例。

46 条命令

容器生命周期

docker run <image>

从镜像创建并启动一个新容器。

-d 后台运行;-it 交互式终端;--name 指定名称;-p 主机:容器 端口映射;-v 挂载卷;-e KEY=VAL 设置环境变量;--rm 退出后自动删除;--restart=always|unless-stopped|on-failure

docker run -d --name web -p 8080:80 -v $PWD:/usr/share/nginx/html:ro nginx:alpine
docker start|stop|restart <container>

启动、停止或重启已有容器(通过名称或 ID)。

-t N 杀进程前等待的秒数(默认 10)

docker restart web && docker logs --tail 50 web
docker rm <container>

删除一个或多个已停止的容器。

-f 强制删除运行中的容器;-v 同时删除匿名卷

docker rm -f $(docker ps -aq)
docker ps

列出容器(默认仅显示运行中的)。

-a 全部;-q 仅输出 ID;-s 显示占用空间;--format go 模板;--filter status|name=...

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
docker rename <c> <new>

重命名一个容器。

docker rename web-1 gateway-web
docker update <c>

运行时更新容器的资源限制或重启策略。

--cpus N;--memory SIZE;--memory-swap SIZE;--restart 策略

docker update --cpus 1.5 --memory 1g api
docker wait <c>

阻塞直到容器停止,然后打印其退出码。

docker wait db && echo "db stopped"
docker top <c>

显示容器内正在运行的进程(相当于宿主机 PID 命名空间下的 ps)。

docker top web

日志与 Exec

docker logs <c>

获取容器的日志。

-f 持续跟踪;--tail N;--since 时间戳|时长;-t 显示时间戳;--details

docker logs -f --tail 200 -t api | grep ERROR
docker exec -it <c> <cmd>

在运行中的容器内执行命令(通常是开一个交互式 Shell)。

-i 保持 STDIN 打开;-t 分配伪终端;-u 指定用户;-w 指定工作目录;-e KEY=VAL

docker exec -it -u postgres db psql -U postgres app_production
docker attach <c>

将本地 STDIN/STDOUT 接入到运行中的容器(相当于 docker start -i)。

--sig-proxy 代理信号;--no-stdin

docker attach web && Ctrl-p Ctrl-q to detach
docker cp <c>:<src> <dest>

在容器与本地文件系统之间复制文件/目录。

-L 跟随符号链接;-a 归档模式

docker cp db:/var/lib/postgresql/data ./pgdata

检查与监控

docker inspect <obj>

查看 Docker 对象(容器、镜像、卷、网络)的底层信息。

-f go 模板;--type container|image|network|volume;-s 大小

docker inspect -f '{{.NetworkSettings.IPAddress}}' web
docker stats

实时流式显示运行中容器的 CPU / 内存 / 网络 / 磁盘使用。

--no-stream 单次输出;-a 全部(含已停止);--format;--no-trunc

docker stats --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'
docker diff <c>

查看容器文件系统的变化(新增 / 修改 / 删除)。

docker diff web | head -20

镜像操作

docker pull <image>[:tag]

从镜像仓库拉取镜像(或整个仓库)。

-a 拉取所有标签的镜像;--platform linux/amd64;-q 静默;--disable-content-trust

docker pull --platform linux/amd64 nginx:1.27-alpine
docker images

列出本地守护进程上的镜像。

-a 全部(含中间层);-q 仅输出 ID;--digests;--filter dangling=true

docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20
docker build <path>

根据 Dockerfile 构建镜像。

-t name:tag;-f Dockerfile 路径;--no-cache;--build-arg KEY=VAL;--target stage;--progress=plain;--platform

docker build -t myapp:dev --build-arg NODE_ENV=development --progress=plain .
docker tag <src> <dest>

为已有镜像创建一个新的标签(别名 / 推送目标)。

docker tag myapp:dev registry.example.com/team/myapp:1.2.0
docker push <image>

将镜像(或整个仓库)上传到镜像仓库。

--disable-content-trust;-a 全部标签;--quiet

docker push registry.example.com/team/myapp:1.2.0
docker rmi <image>

删除一个或多个镜像。

-f 强制(含子镜像时也取消标签);--no-prune 保留被取消标签的父镜像

docker rmi -f $(docker images --filter 'dangling=true' -q)
docker image prune / docker save / docker load

回收空间(按悬空/早于 Xh 过滤);将镜像保存到 tar 或从 tar 加载。

-a 全部;--filter 'until=24h';-o file.tar;-i file.tar

docker image prune -af --filter 'until=72h' && docker save -o nginx.tar nginx:alpine
docker history <image>

显示镜像的层 / 中间构建历史。

--no-trunc;--human;-q 仅 ID

docker history --no-trunc --human myapp:dev

网络

docker network ls

列出网络。

--filter driver=bridge|overlay;-q 仅 ID;--format

docker network ls --filter driver=bridge --format '{{.Name}}'
docker network create <name>

创建一个用户自定义的桥接网络,用于服务发现和 DNS。

--driver bridge|overlay|macvlan;--subnet CIDR;--gateway;--ipv6;--internal

docker network create --driver bridge --subnet 10.20.0.0/24 mynet
docker network connect|disconnect <net> <c>

将运行中的容器接入或脱离一个网络。

--ip IPV4;--ip6 IPV6;--alias 主机别名;--link 容器

docker network connect mynet web
docker network rm / docker network prune

删除一个或多个网络 / 清理无用网络。

-f 强制;--filter 'until=24h'

docker network prune -f

卷与存储

docker volume ls

列出卷。

--filter dangling=true|driver|name;-q 仅 ID;--format

docker volume ls --filter dangling=true -q
docker volume create <name>

创建一个命名卷(由 Docker 管理,独立于容器的文件系统)。

--driver local;--opt type=nfs;--opt o=addr;--opt device=:/path

docker volume create --driver local --opt type=nfs --opt o=addr=10.0.0.1 --opt device=:/exports/data pgdata
docker volume rm / docker volume prune

删除一个或多个卷 / 清理无用卷。

-f 强制;--filter 'label=...'

docker volume rm $(docker volume ls -q --filter dangling=true)
docker volume inspect <vol>

显示卷的底层信息(挂载点、驱动、选项)。

docker volume inspect pgdata --format '{{.Mountpoint}}'

Docker Compose

docker compose up

根据 compose.yaml 构建(如需要)、创建并启动服务。

-d 后台运行;--build 强制构建;--force-recreate;--pull always|missing|never;-f 指定文件

docker compose -f compose.prod.yaml up -d --pull always
docker compose down

停止并删除容器、网络;默认同时删除匿名卷。

--volumes 同时删除命名卷;--rmi all|local;--remove-orphans;-t N 超时

docker compose down --rmi local --remove-orphans
docker compose ps / logs

列出 Compose 服务 / 查看日志。

ps -q 仅 ID;logs -f 持续跟踪;--tail N;--since

docker compose ps --format json | jq '.[] | {Name, State}' && docker compose logs -f --tail 100 api
docker compose exec / run

在已运行的 / 新建的服务容器中执行命令。

exec --user;exec -e VAR=val;run --rm 运行后删除容器

docker compose exec db psql -U postgres app && docker compose run --rm api npm run migrate
docker compose build / pull / push

为 Compose 项目构建镜像 / 从仓库拉取镜像 / 推送镜像到仓库。

--no-cache;--pull;--quiet;--parallel

docker compose build --no-cache api worker
docker compose restart / stop / start / scale

服务的生命周期快捷操作;scale 用于调整副本数。

restart <svc>;stop <svc>;start <svc>;scale api=4 worker=2

docker compose restart api && docker compose up -d --scale worker=4

镜像仓库

docker login [server]

登录到镜像仓库。直接执行 docker login 即登录 Docker Hub。

-u 用户名;-p 密码;--password-stdin

echo "$REGISTRY_TOKEN" | docker login ghcr.io -u myuser --password-stdin
docker logout [server]

从配置中移除某个镜像仓库的凭据。

docker logout && docker info 2>/dev/null | head
docker search <term>

在 Docker Hub 上搜索镜像。

--filter stars=N;--limit N;--format

docker search --filter stars=100 --limit 5 postgres

系统与清理

docker system df

显示 Docker 的磁盘占用(镜像、容器、卷、构建缓存)。

-v 详细

docker system df -v | sort -k7 -h | tail
docker system prune

删除所有已停止容器、悬空镜像和无用网络。

-a 全部镜像;--volumes 同时清理卷;--filter 'until=24h';-f 强制

docker system prune -af --volumes --filter 'until=72h'
docker builder prune

清理构建缓存(释放旧层占用的磁盘空间)。

-af;--filter 'until=72h';--keep-storage SIZE

docker builder prune -af --filter 'until=72h'
docker context ls / use

管理 Docker context,用于多主机 / 多守护进程场景(包括 SSH 上的远程 context)。

ls --format json;use myctx

docker context create myhost --docker host=ssh://user@server && docker context use myhost && docker ps
docker info

显示系统全局信息,调试问题时常用。

--format

docker info -f '{{.DriverStatus}}'
docker port <c>

列出容器的端口映射(主机 ↔ 容器)。

docker port web 80

速查页版本 1.0.0

适用于 Docker Engine 24.0+