qub*_*sup 6 containers docker dockerfile
我需要让一些容器进入死状态,因为我想检查我的脚本是否正在工作。欢迎任何建议。谢谢。
您要求提供一个dead容器。
不要在家里做这些事:
ID=$(docker run --name dead-experiment -d -t alpine sh)
docker kill dead-experiment
test "$ID" != "" && chattr +i -R /var/lib/docker/containers/$ID
docker rm -f dead-experiment
Run Code Online (Sandbox Code Playgroud)
瞧,docker 无法删除容器根目录,所以它陷入了status=dead:
docker ps -a -f status=dead
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
616c2e79b75a alpine "sh" 6 minutes ago Dead dead-experiment
Run Code Online (Sandbox Code Playgroud)
container.SetDead()
// (...)
if err := system.EnsureRemoveAll(container.Root); err != nil {
return errors.Wrapf(err, "unable to remove filesystem for %s", container.ID)
}
// (...)
container.SetRemoved()
Run Code Online (Sandbox Code Playgroud)
因此,如果 docker 无法删除容器根目录,它将保持死亡状态,并且不会继续处于已删除状态。所以我强制文件权限不允许 root 删除文件 ( chattr -i)。
PS:要恢复目录权限,请执行以下操作:chattr -i -R /var/lib/docker/containers/$ID
| 归档时间: |
|
| 查看次数: |
4246 次 |
| 最近记录: |