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
2
PID=$(docker inspect --format {{.State.Pid}} <容器名称或ID>)
nsenter -t $PID -m -u -n -i -p

4. 通过 SSH 进入容器(不推荐)

如果容器内运行了 SSH 服务:

1
ssh root@<容器IP> -p <SSH端口>

注意:通常不推荐在容器内运行 SSH 服务,这会增加安全风险。

5. 创建新容器并进入

如果容器未运行,可以先启动并进入:

1
docker run -it <镜像名称> /bin/bash

实用技巧

  1. 查看容器列表(获取容器名称或ID):

    1
    docker ps
  2. 使用容器名称代替ID(更易读):

    1
    docker exec -it my_nginx_container /bin/bash
  3. 退出容器而不停止容器

    • 对于 docker exec:直接输入 exit 或按 Ctrl+D
    • 对于 docker attach:按 Ctrl+P 然后 Ctrl+Q 分离而不退出
  4. 使用特定用户进入容器

    1
    docker exec -it -u root <容器名称或ID> /bin/bash
  5. 检查容器内可用的 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
2
docker stop $(docker ps -aq)
docker rm $(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 ...

注意事项

  1. 执行清理前,确保不再需要这些资源
  2. prune -a 会删除所有未被使用的镜像,包括可能以后会用到的缓存镜像
  3. 生产环境执行清理时要特别小心,建议先备份重要数据

定期清理可以保持 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
2
PID=$(docker inspect --format {{.State.Pid}} <容器名称或ID>)
nsenter -t $PID -m -u -n -i -p

4. 通过 SSH 进入容器(不推荐)

如果容器内运行了 SSH 服务:

1
ssh root@<容器IP> -p <SSH端口>

注意:通常不推荐在容器内运行 SSH 服务,这会增加安全风险。

5. 创建新容器并进入

如果容器未运行,可以先启动并进入:

1
docker run -it <镜像名称> /bin/bash

实用技巧

  1. 查看容器列表(获取容器名称或ID):

    1
    docker ps
  2. 使用容器名称代替ID(更易读):

    1
    docker exec -it my_nginx_container /bin/bash
  3. 退出容器而不停止容器

    • 对于 docker exec:直接输入 exit 或按 Ctrl+D
    • 对于 docker attach:按 Ctrl+P 然后 Ctrl+Q 分离而不退出
  4. 使用特定用户进入容器

    1
    docker exec -it -u root <容器名称或ID> /bin/bash
  5. 检查容器内可用的 shell

    1
    docker exec <容器名称或ID> ls /bin/

选择哪种方法取决于具体需求,docker exec 是最常用且最安全的方式。

时间: 2025-04-02T18:41:23



对话统计

  • 消息总数: 4 条
  • 处理状态: 成功转换