Docker

Docker 常用指令

维护 Docker 服务时,常用命令可以按查看、日志、进入、更新、备份、清理和排障来记。

官方参考

状态查看

docker version
docker info
docker ps
docker ps -a
docker stats

查看单个容器详情:

docker inspect container-name

只看容器挂载:

docker inspect container-name --format '{{json .Mounts}}'

容器生命周期

docker start container-name
docker stop container-name
docker restart container-name
docker rm container-name

强制删除停止不了的容器:

docker rm -f container-name

日志查看

查看最近日志:

docker logs --tail=120 container-name

持续跟随日志:

docker logs -f --tail=120 container-name

带时间戳:

docker logs -f --timestamps container-name

进入容器

docker exec -it container-name sh

如果容器里有 Bash:

docker exec -it container-name bash

执行一次性命令:

docker exec container-name env
docker exec container-name ls -la /app

镜像管理

docker images
docker pull image-name:tag
docker build -t image-name:tag .
docker rmi image-name:tag

查看镜像历史:

docker history image-name:tag

保存和导入镜像:

docker save image-name:tag | gzip > image-name.tar.gz
gunzip -c image-name.tar.gz | docker load

卷管理

docker volume ls
docker volume inspect volume-name
docker volume create volume-name
docker volume rm volume-name

备份命名卷:

docker run --rm \
  -v volume-name:/data:ro \
  -v "$PWD:/backup" \
  alpine \
  tar czf /backup/volume-name.tar.gz -C /data .

恢复命名卷:

docker volume create volume-name

docker run --rm \
  -v volume-name:/data \
  -v "$PWD:/backup" \
  alpine \
  sh -c "cd /data && tar xzf /backup/volume-name.tar.gz"

网络管理

docker network ls
docker network inspect network-name
docker network create app-net
docker network rm app-net

把容器加入网络:

docker network connect app-net container-name

从网络移除:

docker network disconnect app-net container-name

Compose 常用命令

docker compose config
docker compose ps
docker compose up -d
docker compose logs --tail=120
docker compose logs -f --tail=120 service-name
docker compose restart service-name
docker compose pull
docker compose up -d
docker compose down

只重建单个服务:

docker compose up -d --build service-name

进入 Compose 服务容器:

docker compose exec service-name sh

更新服务

单容器更新流程:

docker pull image-name:tag
docker stop container-name
docker rm container-name
docker run -d --name container-name image-name:tag

Compose 更新流程:

docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=120

如果服务有数据库或重要文件,更新前先备份。

清理命令

查看磁盘占用:

docker system df

清理未使用容器、网络、悬空镜像和构建缓存:

docker system prune

清理未使用镜像:

docker image prune -a

清理未使用卷:

docker volume prune

快速排障

现象命令
容器是否存在docker ps -a
容器为什么退出docker logs --tail=120 container-name
端口怎么映射docker port container-name
环境变量是否进入容器docker exec container-name env
挂载是否正确docker inspect container-name --format '{{json .Mounts}}'
网络是否正确docker inspect container-name --format '{{json .NetworkSettings.Networks}}'
磁盘占用多少docker system df