Docker资源清理指南
进入 Docker 容器的几种方法
要进入正在运行的 Docker 容器内部进行操作,有以下几种常用方法:
1. 使用 docker exec 命令(推荐方式)
1 | docker exec -it <容器名称或ID> /bin/bash |
或者使用 sh(如果容器中没有 bash):
1 | docker exec -it <容器名称或ID> /bin/sh |
参数说明:
-i:保持 STDIN 打开(交互式)-t:分配一个伪终端/bin/bash或/bin/sh:指定要运行的 shell
2. 使用 docker attach 命令
1 | docker attach <容器名称或ID> |
注意:
- 这种方式会直接连接到容器的主进程
- 退出时会终止容器(除非使用
--detach-keys参数设置分离键) - 不如
docker exec灵活,不推荐常规使用
3. 使用 nsenter 工具(高级用法)
1 | PID=$(docker inspect --format {{.State.Pid}} <容器名称或ID>) |
4. 通过 SSH 进入容器(不推荐)
如果容器内运行了 SSH 服务:
1 | ssh root@<容器IP> -p <SSH端口> |
注意:通常不推荐在容器内运行 SSH 服务,这会增加安全风险。
5. 创建新容器并进入
如果容器未运行,可以先启动并进入:
1 | docker run -it <镜像名称> /bin/bash |
实用技巧
查看容器列表(获取容器名称或ID):
1
docker ps
使用容器名称代替ID(更易读):
1
docker exec -it my_nginx_container /bin/bash
退出容器而不停止容器:
- 对于
docker exec:直接输入exit或按Ctrl+D - 对于
docker attach:按Ctrl+P然后Ctrl+Q分离而不退出
- 对于
使用特定用户进入容器:
1
docker exec -it -u root <容器名称或ID> /bin/bash
检查容器内可用的 shell:
1
docker exec <容器名称或ID> ls /bin/
选择哪种方法取决于具体需求,docker exec 是最常用且最安全的方式。
时间: 2025-04-02T18:41:23
👤 用户
docker 如何清理
时间: 2025-04-01T18:45:46
🤖 DeepSeek (deepseek-chat)
Docker 清理指南
Docker 在使用过程中会积累很多不再需要的镜像、容器、卷和网络,占用大量磁盘空间。以下是清理 Docker 资源的各种方法:
1. 查看 Docker 磁盘使用情况
1 | docker system df |
2. 清理未使用的资源
删除所有停止的容器
1 | docker container prune |
删除所有未被使用的镜像(未被任何容器引用)
1 | docker image prune |
删除所有未被使用的网络
1 | docker network prune |
删除所有未被使用的卷
1 | docker volume prune |
一键清理所有未使用的资源(容器、网络、镜像、构建缓存)
1 | docker system prune |
强制删除所有未使用的镜像(包括悬空镜像)
1 | docker system prune -a |
3. 针对性清理
删除特定镜像
1 | docker rmi <image_id> |
删除所有悬空镜像(没有标签的镜像)
1 | docker image prune -f |
删除特定容器
1 | docker rm <container_id> |
删除特定卷
1 | docker volume rm <volume_name> |
删除特定网络
1 | docker network rm <network_name> |
4. 清理构建缓存
删除构建缓存
1 | docker builder prune |
删除所有构建缓存
1 | docker builder prune -a |
5. 彻底清理(谨慎使用)
停止并删除所有容器
1 | docker stop $(docker ps -aq) |
删除所有镜像
1 | docker rmi $(docker images -q) |
删除所有卷
1 | docker volume rm $(docker volume ls -q) |
6. 清理 Docker 日志
查看容器日志大小
1 | docker ps -q | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl |
清空容器日志
1 | truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_name>) |
限制日志大小(在运行容器时)
1 | docker run --log-opt max-size=10m --log-opt max-file=3 ... |
注意事项
- 执行清理前,确保不再需要这些资源
prune -a会删除所有未被使用的镜像,包括可能以后会用到的缓存镜像- 生产环境执行清理时要特别小心,建议先备份重要数据
定期清理可以保持 Docker 环境的高效运行,避免磁盘空间被无用资源占用。
时间: 2025-04-01T18:45:46
👤 用户
如何进入具体某个容器
时间: 2025-04-02T18:41:23
🤖 DeepSeek (deepseek-chat)
进入 Docker 容器的几种方法
要进入正在运行的 Docker 容器内部进行操作,有以下几种常用方法:
1. 使用 docker exec 命令(推荐方式)
1 | docker exec -it <容器名称或ID> /bin/bash |
或者使用 sh(如果容器中没有 bash):
1 | docker exec -it <容器名称或ID> /bin/sh |
参数说明:
-i:保持 STDIN 打开(交互式)-t:分配一个伪终端/bin/bash或/bin/sh:指定要运行的 shell
2. 使用 docker attach 命令
1 | docker attach <容器名称或ID> |
注意:
- 这种方式会直接连接到容器的主进程
- 退出时会终止容器(除非使用
--detach-keys参数设置分离键) - 不如
docker exec灵活,不推荐常规使用
3. 使用 nsenter 工具(高级用法)
1 | PID=$(docker inspect --format {{.State.Pid}} <容器名称或ID>) |
4. 通过 SSH 进入容器(不推荐)
如果容器内运行了 SSH 服务:
1 | ssh root@<容器IP> -p <SSH端口> |
注意:通常不推荐在容器内运行 SSH 服务,这会增加安全风险。
5. 创建新容器并进入
如果容器未运行,可以先启动并进入:
1 | docker run -it <镜像名称> /bin/bash |
实用技巧
查看容器列表(获取容器名称或ID):
1
docker ps
使用容器名称代替ID(更易读):
1
docker exec -it my_nginx_container /bin/bash
退出容器而不停止容器:
- 对于
docker exec:直接输入exit或按Ctrl+D - 对于
docker attach:按Ctrl+P然后Ctrl+Q分离而不退出
- 对于
使用特定用户进入容器:
1
docker exec -it -u root <容器名称或ID> /bin/bash
检查容器内可用的 shell:
1
docker exec <容器名称或ID> ls /bin/
选择哪种方法取决于具体需求,docker exec 是最常用且最安全的方式。
时间: 2025-04-02T18:41:23
对话统计
- 消息总数: 4 条
- 处理状态: 成功转换