1.Docker 常用命令总结表格
Docker 环境信息命令
命令 | 作用 |
---|---|
docker version |
查看 Docker 客户端和服务端的版本信息 |
docker info |
查看 Docker 系统的详细信息,包括存储驱动、内核版本等 |
docker inspect <name or id> |
获取容器或镜像的详细配置信息 |
docker system df |
查看 Docker 所有资源的磁盘使用情况 |
系统日志信息常用命令
命令 | 作用 |
---|---|
docker logs <name or id> |
查看容器的日志 |
docker logs -f <name or id> |
实时跟踪容器日志 |
docker events |
查看 Docker 的事件流,实时显示系统事件 |
容器的生命周期管理命令
命令 | 作用 |
---|---|
docker create |
创建一个容器但不启动 |
docker run |
创建并启动一个容器 |
docker start <name or id> |
启动已经停止的容器 |
docker stop <name or id> |
停止一个正在运行的容器 |
docker rm <name or id> |
删除一个容器 |
容器运维操作命令
命令 | 作用 |
---|---|
docker exec <name or id> |
在运行中的容器中执行命令 |
docker cp <src> <dest> |
在主机与容器间复制文件 |
docker stats |
查看容器的实时资源使用情况 |
docker top <name or id> |
查看容器内正在运行的进程 |
镜像管理命令
命令 | 作用 |
---|
| docker images
| 列出所有本地镜像 |
| docker pull <image>
| 从仓库拉取镜像 |
| docker build -t <name>
| 从 Dockerfile 构建镜像 |
| docker rmi <image>
| 删除本地镜像 |
镜像仓库命令
命令 | 作用 |
---|
| docker login
| 登录 Docker 仓库 |
| docker logout
| 登出 Docker 仓库 |
| docker push <image>
| 推送镜像到仓库 |
| docker tag <image> <repo:tag>
| 为镜像打标签 |
2.使用案例
创建并运行容器
bash
# 使用指定网络、挂载卷、环境变量等选项运行容器
docker run -d \
--name myapp-container \
-p 8080:80 \
-e ENVIRONMENT=production \
--network my-network \
-v /host/data:/container/data \
--restart always \
nginx
参数解释:
- -d: 后台运行容器。
- --name: 指定容器名称。
- -p 8080:80: 将容器内的80端口映射到宿主机的8080端口。
- -e ENVIRONMENT=production: 设置环境变量 ENVIRONMENT 为 production。
- --network my-network: 使用指定的 Docker 网络 my-network。
- -v /host/data:/container/data: 将宿主机的 /host/data 目录挂载到容器内的 - /container/data。
- --restart always: 设置容器重启策略为总是重启。
构建镜像并推送到 Docker Hub
bash
# 使用指定 Dockerfile 构建镜像,并将其推送到 Docker Hub 仓库
docker build -t myusername/myapp:latest .
# 登录 Docker Hub
docker login
# 推送镜像到 Docker Hub
docker push myusername/myapp:latest
参数解释:
- docker build -t myusername/myapp:latest .: 在当前目录下使用 Dockerfile 构建镜像,并命名为 myusername/myapp:latest。
- docker login: 登录到 Docker Hub 以便推送镜像。
- docker push: 将构建的镜像推送到指定的 Docker Hub 仓库。
资源限制和日志管理
bash
# 运行容器时为其分配 CPU 和内存限制
docker run -d \
--name myapp-container \
-p 8080:80 \
--memory="512m" \
--cpus="1.0" \
nginx
# 查看容器日志并指定时间范围
docker logs --since="2024-11-29T10:00:00" --until="2024-11-29T12:00:00" myapp-container
# 使用日志驱动程序配置容器
docker run -d \
--name myapp-container \
-p 8080:80 \
--log-driver=json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx
参数解释:
- --memory="512m": 为容器限制最大内存为 512MB。
- --cpus="1.0": 为容器分配 1 个 CPU。
- --since 和 --until: 限制查看日志的时间范围。
- --log-driver=json-file: 使用 json-file 日志驱动,记录容器日志到 JSON 文件。
- --log-opt max-size=10m: 限制日志文件的最大大小为 10MB。
- --log-opt max-file=3: 设置最大日志文件数目为 3,超出时会删除最旧的日志。
定期清理不再使用的镜像和容器
bash
# 停止所有的容器
docker stop $(docker ps -q)
# 清理所有停止的容器
docker container prune
# 清理所有未使用的镜像
docker image prune -a
# 清理未使用的网络
docker network prune
# 清理所有未使用的卷
docker volume prune
常用组合命令
bash
# 1. 停止所有运行中的容器
docker stop $(docker ps -q)
# 2. 删除所有停止的容器
docker rm $(docker ps -a -q -f status=exited)
# 3. 删除所有未使用的镜像
docker image prune -a -f
# 4. 清理所有未使用的镜像、容器、网络和卷
docker system prune -a -f --volumes
# 5. 查找并删除所有悬空镜像
docker rmi $(docker images -f "dangling=true" -q)
# 6. 查看容器的资源使用情况并实时监控
docker stats $(docker ps -q)
# 7. 查看所有容器的日志并实时跟踪
docker logs -f $(docker ps -q)
# 8. 为多个容器执行相同的命令
docker exec -it $(docker ps -q) /bin/bash
# 9. 查看所有容器的状态并格式化输出
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
# 10. 批量停止并删除容器
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
# 11. 查找并删除所有未使用的 Docker 网络
docker network prune -f
# 12. 查看所有容器的 CPU 和内存使用情况
docker stats --all --no-stream
# 13. 为多个容器批量执行相同的操作(如启动)
docker start $(docker ps -a -q -f "status=exited")
# 14. 删除所有无标签的镜像并清理缓存
docker rmi $(docker images -f "dangling=true" -q) && docker builder prune -f