本文整理 Docker 日常使用中最常见、最实用的一组命令,适合部署服务、排查问题、管理镜像、查看日志和维护数据卷时快速查询。
命令中的 容器名、镜像名、网络名、数据卷名 可以替换成你的实际名称。涉及删除的命令建议先执行查看命令确认目标,避免误删正在使用的服务。
一、Docker 基础信息
查看 Docker 版本:
docker version
查看 Docker 客户端和服务端信息:
docker info
查看 Docker 占用空间:
docker system df
查看 Docker 命令帮助:
docker --help
docker run --help
二、镜像管理
搜索镜像:
docker search nginx
拉取镜像:
docker pull nginx:latest
docker pull alpine:3.23
查看本地镜像:
docker images
docker image ls
查看镜像详细信息:
docker image inspect nginx:latest
给镜像打标签:
docker tag nginx:latest my-nginx:backup
删除一个明确指定的镜像:
docker image rm my-nginx:backup
强制删除一个明确指定的镜像:
docker image rm -f my-nginx:backup
导出镜像为 tar 文件:
docker save -o nginx-latest.tar nginx:latest
从 tar 文件导入镜像:
docker load -i nginx-latest.tar
三、容器运行
运行一个临时容器:
docker run --rm alpine:3.23 cat /etc/alpine-release
运行一个后台容器:
docker run -d --name web nginx:latest
指定端口映射:
docker run -d --name web -p 8080:80 nginx:latest
指定环境变量:
docker run -d --name app -e TZ=Asia/Shanghai nginx:latest
指定重启策略:
docker run -d --name web --restart unless-stopped -p 8080:80 nginx:latest
挂载本地目录:
docker run -d --name web -p 8080:80 -v /opt/nginx/html:/usr/share/nginx/html nginx:latest
挂载数据卷:
docker run -d --name web -p 8080:80 -v nginx-html:/usr/share/nginx/html nginx:latest
进入容器交互 shell:
docker run -it --name alpine-test alpine:3.23 sh
容器退出后自动删除:
docker run --rm -it alpine:3.23 sh
四、容器查看与管理
查看正在运行的容器:
docker ps
查看所有容器:
docker ps -a
查看容器详细信息:
docker inspect web
查看容器资源占用:
docker stats
docker stats web
启动容器:
docker start web
停止容器:
docker stop web
重启容器:
docker restart web
暂停容器:
docker pause web
恢复容器:
docker unpause web
删除一个明确指定的容器:
docker rm web
强制删除一个明确指定的容器:
docker rm -f web
重命名容器:
docker rename web nginx-web
五、进入容器与执行命令
进入正在运行的容器:
docker exec -it web sh
如果容器里有 bash:
docker exec -it web bash
在容器中执行单条命令:
docker exec web nginx -v
查看容器内进程:
docker top web
从容器复制文件到宿主机:
docker cp web:/etc/nginx/nginx.conf ./nginx.conf
从宿主机复制文件到容器:
docker cp ./nginx.conf web:/etc/nginx/nginx.conf
六、日志查看
查看容器日志:
docker logs web
实时跟踪日志:
docker logs -f web
查看最近 100 行日志:
docker logs --tail 100 web
查看带时间戳的日志:
docker logs -t web
从指定时间之后查看日志:
docker logs --since "2026-05-13T08:00:00" web
七、镜像构建
在当前目录构建镜像:
docker build -t my-app:latest .
指定 Dockerfile 构建:
docker build -f Dockerfile.prod -t my-app:prod .
构建时传入变量:
docker build --build-arg APP_ENV=production -t my-app:prod .
不使用缓存构建:
docker build --no-cache -t my-app:latest .
查看镜像构建历史:
docker history my-app:latest
八、网络管理
查看网络列表:
docker network ls
创建 bridge 网络:
docker network create app-net
查看网络详情:
docker network inspect app-net
让容器连接到网络:
docker network connect app-net web
让容器断开网络:
docker network disconnect app-net web
删除一个明确指定的网络:
docker network rm app-net
运行容器时指定网络:
docker run -d --name web --network app-net nginx:latest
九、数据卷管理
查看数据卷列表:
docker volume ls
创建数据卷:
docker volume create app-data
查看数据卷详情:
docker volume inspect app-data
运行容器时挂载数据卷:
docker run -d --name app -v app-data:/data alpine:3.23 sleep infinity
删除一个明确指定的数据卷:
docker volume rm app-data
数据卷被容器占用时,需要先停止并删除对应容器,再删除数据卷。
十、Docker Compose 常用命令
Compose V2 使用 docker compose,不再推荐旧的 docker-compose 写法。
启动服务:
docker compose up -d
查看服务状态:
docker compose ps
查看日志:
docker compose logs
docker compose logs -f
docker compose logs -f app
停止服务:
docker compose stop
启动已停止的服务:
docker compose start
重启服务:
docker compose restart
docker compose restart app
停止并删除 Compose 创建的容器和网络:
docker compose down
重新拉取镜像:
docker compose pull
重新创建并启动服务:
docker compose up -d --force-recreate
只重建某个服务:
docker compose up -d --build app
进入 Compose 服务容器:
docker compose exec app sh
查看最终合并后的 Compose 配置:
docker compose config
十一、仓库登录与推送
登录镜像仓库:
docker login
给镜像打远程仓库标签:
docker tag my-app:latest username/my-app:latest
推送镜像:
docker push username/my-app:latest
退出登录:
docker logout
十二、维护与排错
查看 Docker 服务状态:
systemctl status docker
重启 Docker 服务:
systemctl restart docker
查看 Docker 服务日志:
journalctl -u docker --no-pager
查看容器退出原因:
docker inspect web --format '{{.State.Status}} {{.State.ExitCode}} {{.State.Error}}'
查看容器 IP:
docker inspect web --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
查看容器挂载信息:
docker inspect web --format '{{json .Mounts}}'
查看端口映射:
docker port web
查看容器文件变更:
docker diff web
十三、安全清理建议
清理前先查看空间占用:
docker system df
删除容器、镜像、网络和数据卷时,建议优先使用明确名称或 ID:
docker stop web
docker rm web
docker image rm nginx:latest
docker network rm app-net
docker volume rm app-data
不建议在生产环境里直接复制执行自动批量清理命令。清理镜像或数据卷前,先确认它们没有被正在运行的服务使用。
十四、批量清理与批量删除
下面这些命令会批量清理 Docker 对象,适合测试机、实验环境或已经确认服务状态的主机。生产环境执行前,建议先看清楚 docker ps -a、docker images、docker volume ls 和 docker system df 的输出。
清理所有已停止容器:
docker container prune
清理未被容器使用的悬空镜像:
docker image prune
清理所有未被容器使用的镜像,不限于悬空镜像:
docker image prune -a
清理未被使用的网络:
docker network prune
清理未被使用的数据卷:
docker volume prune
清理停止的容器、未使用的网络、悬空镜像和构建缓存:
docker system prune
清理停止的容器、未使用的网络、未使用的镜像和构建缓存:
docker system prune -a
同时清理未使用的数据卷:
docker system prune -a --volumes
不进入交互确认,直接执行清理:
docker system prune -a --volumes -f
按时间过滤清理,例如清理 24 小时以前的未使用对象:
docker system prune -a --filter "until=24h"
清理构建缓存:
docker builder prune
清理全部未使用构建缓存:
docker builder prune -a
批量停止所有正在运行的容器:
docker stop $(docker ps -q)
批量删除所有已停止容器:
docker rm $(docker ps -aq -f status=exited)
批量删除所有容器:
docker rm -f $(docker ps -aq)
批量删除悬空镜像:
docker image rm $(docker images -f dangling=true -q)
批量删除所有镜像:
docker image rm -f $(docker images -q)
批量删除所有未使用数据卷:
docker volume rm $(docker volume ls -qf dangling=true)
批量命令执行前可以先预览目标 ID:
docker ps -aq
docker images -q
docker volume ls -qf dangling=true
如果命令提示 requires at least 1 argument,通常表示当前没有可清理对象,不是 Docker 故障。
十五、常见组合命令
更新单个 Compose 项目:
docker compose pull
docker compose up -d
docker compose logs -f
查看某个服务是否正常运行:
docker compose ps
docker compose logs --tail 100 app
临时启动一个排错容器:
docker run --rm -it --network app-net alpine:3.23 sh
在临时容器里测试 DNS:
docker run --rm alpine:3.23 nslookup example.com
在临时容器里测试 HTTP:
docker run --rm curlimages/curl:latest curl -I https://example.com
十六、命令记忆口诀
docker run:创建并运行容器docker ps:查看容器docker logs:看日志docker exec:进入容器或执行命令docker stop:停止容器docker rm:删除容器docker images:查看镜像docker pull:拉取镜像docker build:构建镜像docker compose up -d:启动 Compose 项目docker compose down:停止并移除 Compose 项目容器和网络
掌握这些命令后,日常 Docker 部署、升级、排错和维护基本就够用了。
