跳到主要内容

Docker 日常命令速查

这页偏速查,不追求概念完整,主要是把我最常回看的命令放在一起。默认使用较新的对象式写法,例如 docker image lsdocker container ls,但我也保留了常见别名思路,避免查命令时还要做二次翻译。

先记住最小模型

镜像 image -> docker run -> 容器 container
  • 镜像像模板
  • 容器像运行中的实例
  • 删除容器通常不会删镜像
  • 数据持久化要靠 volume 或 bind mount,不要依赖容器可写层

镜像相关

目的命令
查看本地镜像docker image ls
拉取镜像docker pull nginx:stable
查看镜像详情docker image inspect nginx:stable
给镜像打标签docker tag nginx:stable my-nginx:demo
查看镜像构建历史docker history nginx:stable
删除镜像docker image rm my-nginx:demo

常见别名:

  • docker images 等价于 docker image ls

容器相关

目的命令
查看运行中的容器docker container ls
查看所有容器docker container ls -a
创建并运行容器docker run -d --name web -p 8080:80 nginx:stable
启动已存在容器docker start web
停止容器docker stop web
强制杀掉容器docker kill web
重启容器docker restart web
删除容器docker rm web
强制删除运行中的容器docker rm -f web
修改容器名docker rename old-name new-name

常见别名:

  • docker ps 等价于 docker container ls
  • docker ps -a 等价于 docker container ls -a

进入容器和拷贝文件

进入正在运行的容器

docker exec -it web bash

如果镜像里没有 bash,就用 sh

docker exec -it web sh

以 root 身份进入容器

docker exec -u root -it web bash

主机和容器之间复制文件

docker cp ./local.txt web:/tmp/local.txt
docker cp web:/var/log/nginx/access.log ./access.log

日志、状态和检查

目的命令
查看容器日志docker logs web
持续跟日志docker logs -f --tail 100 web
看容器详细信息docker inspect web
只看退出码docker inspect --format '{{.State.ExitCode}}' web
看容器进程docker top web
看资源使用docker stats
看端口映射docker port web

如果你不知道容器为什么退出,优先按这个顺序查:

  1. docker ps -a
  2. docker logs <container>
  3. docker inspect <container>

网络和存储

docker network ls
docker volume ls
docker volume inspect mydata

如果你经常在“数据去哪了”“挂载为什么不对”之间反复跳,直接看:

清理命令

先看磁盘占用:

docker system df

再按对象清理:

docker container prune
docker image prune
docker volume prune
docker network prune

如果你非常确定要做一次大扫除:

docker system prune -a --volumes

这个命令会删掉未使用的容器、网络、镜像和数据卷。它很省事,但也很容易把“暂时没在运行、但你还想留着”的东西一起清掉。

我自己最常用的一组组合

docker ps
docker logs -f --tail 100 my-service
docker exec -it my-service bash
docker inspect my-service
docker system df

关联阅读