前段时间运维向我反馈了一个需求,他们在启动容器的时候使用了--restartalways 启动了容器(就是把容器的启动捆绑了docker引擎的启动),但是他们现在想修改成不关联启动。我当时楞了一下,当时没有想到如何去解决这个问题。


     之后我想了一下,我们的image或container都是利用联合文件系统去关联的。引擎都是通过它们的文档解析和配置它们的。然后,这里我就利用了 docker ps --no-trunc 命令去查看容器的全ID。然后,依据里面文件保存的路径:


/var/lib/docker/container/容器ID,在下面我遍历里面的所有文件,终于在目录下的hostconfig.json发现了一个有趣的参数"RestartPolicy":{"Name":"always","MaximumRetryCount":0},这个不就是我们配置的参数吗?我的第一感觉这样的。我就修改了这个参数修改成了no。然后我迫不及待的用 service docker restart 命令重启了我的docker引擎。但是悲催的事情发生,那个容器还是顽强的起来了,我不死心,又到那个文件里查看了一下,发现刚修改的那个参数有变成了alawys,我当时就不乐意了。这个东东还有其他保存默认的地方覆盖了我的修改吗?


当我准备想放弃的时候,突然我醒悟了一下。是不是,我修改参数的时候没有关掉docker引擎导致配置写不进去呢?但是,我就使用 service docker stop 命令先关掉docker的引擎。然后修改刚才的参数重启后。我没有使用 docker ps 去查看运行中的容器,直接有查看了刚才的那个参数的值,binggo,变成了no。当时,我心里大定,着一定OK了。果不其然,当我使用docker ps 命令去查看的是,终于没有看到我刚才修改的容器了,当我在用docker ps -a 查看所有的容器的时候,发现那个容器静静的躺在列表中。这个问题圆满解决。