前段時間運維向我反饋了一個需求,他們在啟動容器的時候使用了--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 查看所有的容器的時候,發現那個容器靜靜的躺在列表中。這個問題圓滿解決。