Docker 技巧

维持一个长久运行的容器以供调试,加sleep infinity
容器停止后,自动删除这个容器 –rm

例子
docker run -dit – -device=/dev/kfd – -device=/dev/dri – -group-add video – -runtime=runc – -name ubuntu-alwayson qinzhen/comfyui-rocm:0.9.1 sleep infinity

之后使用 docker exec -it ubuntu-alwayson bash 进入,在宿主机使用docker restart ubuntu-alwayson 重启

AMD Rocm&Pytorch easy install

https://rocm.docs.amd.com/projects/install-on-linux/en/develop/install/3rd-party/pytorch-install.html

在容器内做了修改之后可以使用一下命令提交变更

docker commit “运行中的容器ID” “镜像名,如:qinzhen/xxxx”

做一个正式镜像

目录里建立Dockerfile文件,里面写上配置

docker build -t “镜像名” . (不要忘记有.)

docker push “镜像名”

清除Docker build的缓存
docker builder prune / docker builder prune -f / docker builder prune -af

改名
# Tag the existing image with a new name

docker tag old_image_name:latest new_image_name:latest

# Optionally, remove the old tag

docker rmi old_image_name:latest

Docker image 删除之后空间没有释放

这是 Docker 非常经典、但也很容易误解的问题。先给你一句结论:

删除 docker image ≠ 立刻释放磁盘空间
真正占空间的,往往是 容器、匿名 volume、build cache、overlay 层

下面一步一步帮你把空间真正清干净,并告诉你每一步在清什么


一、先确认:空间到底被谁占着(必须做)

先跑这条:

docker system df

你会看到类似:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          12        0         45GB      45GB (100%)
Containers      8         0         10GB      10GB (100%)
Local Volumes   15        2         80GB      60GB (75%)
Build Cache     23        0         35GB      35GB

👉 关键看 RECLAIMABLE可回收,不是 SIZE
👉 这一步是“指路牌”,决定你下一步该删什么

这是 docker system df 的磁盘使用统计,逐项解释一下你的机器情况:

类型总数使用中占用空间可回收
Images491154.71GB22.74GB (41%)
Containers111043.61MB0
Local Volumes1521.681GB1.62GB (96%)
Build Cache000

二、重点看 Images(占用最大)

Images 49
使用中 11
占用 54.71GB
可回收 22.74GB

含义:

  • 49 个镜像
  • 只有 11 个正在被容器使用
  • 22.74GB 是未被使用的镜像,可以删除

查看具体镜像:

docker images

找出 dangling images

docker images -f dangling=true

删除未使用镜像:

docker image prune

删除所有未使用镜像(推荐定期执行):

docker image prune -a

评论已关闭。