带有互斥锁的CreateContainer

时间:2019-01-04 22:31:00

标签: docker docker-api

我有一些Go代码,可以通过go-docker-sdk创建和运行docker容器。可能由于SQS重播而导致某些情况,以及由于其他原因而导致创建请求可能多次发生。为了防止这种情况,我按照以下方式做了一些事情

mutex.lock()
defer mutex.unlock()
//Make docker sdk call to **GET** containers with say image name "name1"
// If "name1" does not exist, **CREATE** a container with image "name1"

我有一个单元测试,它尝试部署一个具有给定映像名称的容器,例如说20次。预期19个呼叫必须失败,并且只有一个必须成功。该测试大部分通过,但是偶尔会有少于19个呼叫失败,这意味着有多个呼叫成功。我不确定docker引擎为什么会这样表现。 GET和CREATE调用阻塞了sdk中的调用,由于我是在互斥锁中进行此操作的,因此所有这些操作自然都已序列化。知道为什么Docker引擎会这样做吗?”

0 个答案:

没有答案