Docker 日常命令速查
这页偏速查,不追求概念完整,主要是把我最常回看的命令放在一起。默认使用较新的对象式写法,例如 docker image ls、docker 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 lsdocker 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 |
如果你不知道容器为什么退出,优先按这个顺序查:
docker ps -adocker logs <container>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