Docker 常用命令速查表
镜像、容器、网络、卷、Compose 等九类命令,含可直接套用的示例
共 92 条命令
docker images镜像列出本地镜像及大小
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"docker pull nginx:alpine镜像拉取镜像,不写标签默认取 latest
docker pull nginx:1.27-alpine
docker build -t app:1.0 .镜像按当前目录的 Dockerfile 构建镜像
docker build -t registry.example.com/app:1.0 .
docker build --no-cache -t app:1.0 .镜像跳过构建缓存重建,排查缓存导致的怪问题
docker build --no-cache -t app:1.0 .
docker build -f Dockerfile.prod .镜像指定非默认文件名的 Dockerfile
docker build -f docker/Dockerfile.prod -t app:prod .
docker build --target builder -t app:debug .镜像只构建到指定阶段,多阶段构建排错常用
docker build --target builder -t app:debug .
docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 .镜像一次构建多架构镜像并推送
docker buildx build --platform linux/amd64,linux/arm64 --push -t app:1.0 .
docker tag app:1.0 registry.example.com/app:1.0镜像给镜像打上仓库地址,推送前必做
docker tag app:1.0 registry.example.com/team/app:1.0
docker rmi <image>镜像删除镜像,被容器占用时需先删容器
docker rmi app:1.0
docker history <image>镜像查看镜像分层与每层大小,定位体积来源
docker history --no-trunc app:1.0
docker save -o app.tar app:1.0镜像把镜像导出为 tar 文件,离线传输用
docker save -o app.tar app:1.0
docker load -i app.tar镜像从 tar 文件载入镜像
docker load -i app.tar
docker inspect <image>镜像查看镜像元数据:环境变量、入口点、暴露端口
docker inspect --format "{{.Config.Env}}" nginxdocker run -d --name web -p 8080:80 nginx容器生命周期后台运行并映射端口,最常用的启动形式
docker run -d --name web -p 8080:80 nginx:alpine
docker run -it --rm alpine sh容器生命周期临时交互容器,退出即自动删除
docker run -it --rm alpine sh
docker run -v pgdata:/var/lib/postgresql/data postgres容器生命周期挂载具名卷,容器删了数据还在
docker run -d --name pg -v pgdata:/var/lib/postgresql/data postgres:16
docker run -e TZ=Asia/Shanghai -e ENV=prod app:1.0容器生命周期传入环境变量,时区不对先查这里
docker run -d -e TZ=Asia/Shanghai -e SPRING_PROFILES_ACTIVE=prod app:1.0
docker run --network host nginx容器生命周期直接用宿主网络,不走端口映射
docker run -d --network host nginx
docker run --restart unless-stopped -d app:1.0容器生命周期设置重启策略,机器重启后自动拉起
docker run -d --restart unless-stopped app:1.0
docker run --memory 512m --cpus 1.5 app:1.0容器生命周期限制内存与 CPU,防单个容器拖垮宿主机
docker run -d --memory 512m --cpus 1.5 app:1.0
docker ps容器生命周期只看运行中的容器
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"docker ps -a容器生命周期列出全部容器,含已退出的
docker ps -a --filter "status=exited"
docker start <ct>容器生命周期启动已存在的容器,配置原样保留
docker start web
docker stop <ct>容器生命周期优雅停止:先发 SIGTERM,超时才 SIGKILL
docker stop -t 30 web
docker restart <ct>容器生命周期重启容器,改了挂载配置后常需要
docker restart web
docker rm <ct>容器生命周期删除已停止的容器
docker rm web-old
docker rm -f <ct>容器生命周期强制删除运行中的容器
docker rm -f web
docker rename <old> <new>容器生命周期重命名容器
docker rename web web-01
docker update --memory 1g <ct>容器生命周期不重建容器就调整资源限制
docker update --memory 1g --memory-swap 1g web
docker attach <ct>容器生命周期附着到容器主进程,Ctrl+C 会连带停掉容器,一般用 exec 更安全
docker attach web
docker exec -it web sh进入容器与文件互传进入运行中的容器,镜像里没有 bash 时用 sh
docker exec -it web /bin/sh
docker exec -u root -it web sh进入容器与文件互传以 root 身份进入,容器内用户无权限时用
docker exec -u 0 -it web sh
docker exec web ls -l /etc/nginx进入容器与文件互传在容器里执行单条命令,不进交互
docker exec web nginx -t
docker exec web cat /etc/resolv.conf进入容器与文件互传容器内 DNS 配置,解析失败先看它
docker exec web cat /etc/resolv.conf
docker cp ./app.conf web:/etc/nginx/conf.d/进入容器与文件互传从宿主机复制文件进容器
docker cp ./app.conf web:/etc/nginx/conf.d/app.conf
docker cp web:/var/log/app.log ./进入容器与文件互传把容器内文件复制到宿主机
docker cp web:/var/log/app.log ./app.log
docker diff <ct>进入容器与文件互传列出容器内相对镜像的文件改动
docker diff web
docker export <ct> -o rootfs.tar进入容器与文件互传导出容器文件系统(不含镜像历史与元数据)
docker export web -o web-rootfs.tar
docker network ls网络列出所有网络
docker network ls
docker network create app-net网络创建自定义桥接网络
docker network create --driver bridge app-net
docker network inspect app-net网络查看网络内各容器的 IP,排查互访问题
docker network inspect --format "{{range .Containers}}{{.Name}} {{.IPv4Address}}{{end}}" app-netdocker network connect app-net <ct>网络把一个运行中的容器接进网络
docker network connect app-net web
docker network disconnect app-net <ct>网络把容器从网络断开
docker network disconnect app-net web
docker network rm app-net网络删除网络,仍有容器连接时需先断开
docker network rm app-net
docker port <ct>网络查看容器的端口映射关系
docker port web
docker run --network app-net --name api app:1.0网络加入自定义网络后可用容器名当主机名互访
docker run -d --network app-net --name api app:1.0
docker volume ls数据卷列出所有数据卷
docker volume ls -f dangling=true
docker volume create pgdata数据卷创建具名卷,便于备份与迁移
docker volume create pgdata
docker volume inspect pgdata数据卷查看卷在宿主机的实际路径
docker volume inspect --format "{{.Mountpoint}}" pgdatadocker run -v $(pwd)/data:/data app:1.0数据卷绑定挂载宿主机目录,改文件立即生效
docker run -d -v $(pwd)/data:/app/data app:1.0
docker run -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro nginx数据卷只读挂载配置文件,防止容器改宿主文件
docker run -d -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro nginx
docker volume rm pgdata数据卷删除数据卷,卷被占用时需先删容器
docker volume rm pgdata
docker volume prune数据卷清理无容器使用的悬空卷
docker volume prune -f
docker inspect -f "{{.Mounts}}" <ct>数据卷查看容器实际挂载了什么,排查配置没生效
docker inspect -f "{{json .Mounts}}" webdocker compose up -dCompose按 compose.yaml 后台启动全部服务
docker compose up -d
docker compose up -d --buildCompose先重新构建镜像再启动,改了 Dockerfile 要用它
docker compose up -d --build
docker compose downCompose停止并删除容器与网络,数据卷保留
docker compose down
docker compose down -vCompose连数据卷一起删,慎用(数据会没)
docker compose down -v --remove-orphans
docker compose psCompose查看本项目容器状态
docker compose ps -a
docker compose logs -f apiCompose跟踪某个服务的日志
docker compose logs -f --tail 100 api
docker compose exec api shCompose进入某个服务的容器
docker compose exec api /bin/sh
docker compose restart apiCompose只重启指定服务,不影响其他服务
docker compose restart api
docker compose pullCompose拉取配置里引用的最新镜像
docker compose pull
docker compose configCompose把 compose 文件展开成最终配置,校验语法与变量替换
docker compose config
docker compose up -d --scale web=3Compose横向扩容到 3 个实例(不能再映射固定端口)
docker compose up -d --scale web=3
docker compose --profile debug upCompose只启动某个 profile 下的服务
docker compose --profile debug up -d
docker login registry.example.com镜像仓库登录私有仓库,凭据存在 ~/.docker/config.json
docker login registry.example.com -u ci
docker logout registry.example.com镜像仓库退出登录并清除本地凭据
docker logout registry.example.com
docker push registry.example.com/app:1.0镜像仓库推送镜像,必须先 tag 成仓库地址
docker push registry.example.com/team/app:1.0
docker search nginx镜像仓库在 Docker Hub 搜索镜像
docker search --limit 10 nginx
docker manifest inspect nginx:latest镜像仓库查看镜像支持哪些架构
docker manifest inspect nginx:latest
docker buildx imagetools inspect app:1.0镜像仓库查看远程多架构镜像的清单详情
docker buildx imagetools inspect registry.example.com/app:1.0
docker system df清理查看镜像、容器、卷、构建缓存各占多少磁盘
docker system df -v
docker system prune清理清理停止的容器、未使用网络与悬空镜像
docker system prune -f
docker system prune -a --volumes清理连未使用镜像与数据卷一起清,危险操作
docker system prune -a --volumes -f
docker builder prune清理只清构建缓存,磁盘被缓存吃满时用
docker builder prune -a -f
docker container prune清理删除所有已退出的容器
docker container prune -f --filter "until=24h"
docker image prune清理删除悬空镜像;加 -a 连未使用的都删
docker image prune -a -f
docker network prune清理清理无容器使用的网络
docker network prune -f
docker rm -v $(docker ps -aq)清理批量删除全部容器并连带匿名卷
docker rm -f -v $(docker ps -aq)
docker logs -f --tail 100 web排错与资源跟踪日志尾部,排错第一站
docker logs -f --tail 100 web
docker logs --since 10m web排错与资源只看最近十分钟的日志
docker logs --since 10m --timestamps web
docker inspect -f "{{.State.Status}}" web排错与资源取容器状态,适合写进脚本判断
docker inspect -f "{{.State.Status}} exit={{.State.ExitCode}}" webdocker inspect -f "{{.State.ExitCode}}" <ct>排错与资源查看退出码,137 多为被 OOM 杀掉
docker inspect -f "{{.State.ExitCode}}" webdocker stats排错与资源实时查看各容器 CPU、内存、网络占用
docker stats --no-stream
docker top <ct>排错与资源查看容器内运行的进程,确认主进程是否还在
docker top web
docker events排错与资源实时监听 Docker 事件,看容器何时被杀或重启
docker events --filter "container=web"
docker run -it --rm --entrypoint sh app:1.0排错与资源覆盖入口点进镜像排查,确认容器为什么起不来
docker run -it --rm --entrypoint sh app:1.0
docker run -it --rm --network container:web nicolaka/netshoot排错与资源借用排错镜像共享目标容器网络,测连通性
docker run -it --rm --network container:web nicolaka/netshoot
docker build --progress=plain -t app:1.0 .排错与资源输出完整构建日志,定位失败的构建步骤
docker build --progress=plain --no-cache -t app:1.0 .
docker inspect -f "{{json .HostConfig.RestartPolicy}}" <ct>排错与资源确认重启策略是否真的生效
docker inspect -f "{{json .HostConfig.RestartPolicy}}" webdocker diff <ct> | head -50排错与资源快速看容器里被动过哪些文件,排查被谁改了配置
docker diff web | head -50
这个工具不好用,或者遇到 bug?
去反馈