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:alpinedocker start|stop|restart <container>启动、停止或重启已有容器(通过名称或 ID)。
-t N 杀进程前等待的秒数(默认 10)
docker restart web && docker logs --tail 50 webdocker 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-webdocker update <c>运行时更新容器的资源限制或重启策略。
--cpus N;--memory SIZE;--memory-swap SIZE;--restart 策略
docker update --cpus 1.5 --memory 1g apidocker 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 ERRORdocker exec -it <c> <cmd>在运行中的容器内执行命令(通常是开一个交互式 Shell)。
-i 保持 STDIN 打开;-t 分配伪终端;-u 指定用户;-w 指定工作目录;-e KEY=VAL
docker exec -it -u postgres db psql -U postgres app_productiondocker attach <c>将本地 STDIN/STDOUT 接入到运行中的容器(相当于 docker start -i)。
--sig-proxy 代理信号;--no-stdin
docker attach web && Ctrl-p Ctrl-q to detachdocker 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}}' webdocker 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-alpinedocker images列出本地守护进程上的镜像。
-a 全部(含中间层);-q 仅输出 ID;--digests;--filter dangling=true
docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20docker 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.0docker push <image>将镜像(或整个仓库)上传到镜像仓库。
--disable-content-trust;-a 全部标签;--quiet
docker push registry.example.com/team/myapp:1.2.0docker 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:alpinedocker 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 mynetdocker network connect|disconnect <net> <c>将运行中的容器接入或脱离一个网络。
--ip IPV4;--ip6 IPV6;--alias 主机别名;--link 容器
docker network connect mynet webdocker 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 -qdocker 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 pgdatadocker 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 alwaysdocker compose down停止并删除容器、网络;默认同时删除匿名卷。
--volumes 同时删除命名卷;--rmi all|local;--remove-orphans;-t N 超时
docker compose down --rmi local --remove-orphansdocker 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 apidocker 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 migratedocker compose build / pull / push为 Compose 项目构建镜像 / 从仓库拉取镜像 / 推送镜像到仓库。
--no-cache;--pull;--quiet;--parallel
docker compose build --no-cache api workerdocker 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-stdindocker logout [server]从配置中移除某个镜像仓库的凭据。
docker logout && docker info 2>/dev/null | headdocker 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 | taildocker 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 psdocker info显示系统全局信息,调试问题时常用。
--format
docker info -f '{{.DriverStatus}}'docker port <c>列出容器的端口映射(主机 ↔ 容器)。
docker port web 80速查页版本 1.0.0
适用于 Docker Engine 24.0+