如何解决成功删除容器后,Docker rm 返回 ContainerNotFoundException
我正在使用与 DockerEngine (Docker.DotNet) 对话的 C# API 来做一些事情,但值得注意的是,在这种情况下,删除了一个停止的容器。这是我的代码:
foreach (var container in RunningContainers)
{
if (container.State == "dead" || container.State == "exited")
{
long exitType = Client.Containers.InspectContainerAsync(container.ID).Result.State.ExitCode;
if (exitType != 0)
{
badExitCodeCount++;
}
Client.Containers.RemoveContainerAsync(container.ID,new ContainerRemoveParameters()).Wait();
}
}
请注意,在这种情况下,RunningContainers
仍包括已停止的容器,并且尚未刷新其状态。
这是错误。执行 RemoveContainerAsync
后 API 成功调用 DockerEngine,容器从我的本地 Docker 容器中删除。然后在代码继续运行后不久,收到 Docker“No such container”响应,引发异常。
对这里发生的事情有什么想法吗?
解决方法
问题在于多个线程同时运行该方法,我错过了棘手的竞争条件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。