事情是這樣的,我先運作了一個docker容器,然後再這個docker容器中部署了一個web應用:

可以看到容器rust_cms的運作指令是<code>/bin/bash</code> ,現在想讓這個容器自動啟動并且啟動後運作web服務.自動啟動可以使用<code>docker update</code>更改啟動政策,如:
docker update --restart always rust_cms
但docker update不支援修改<code>COMMAND</code>,每次docker重新啟動還是要手動去啟動web服務,怎麼辦呢?
想到的第一個方法是使用<code>docker commit</code> 把目前容器儲存為鏡像再使用新的鏡像啟動一個新的容器,在執行<code>docker run</code>啟動新容器時就可以指定新的運作指令了。
感覺這個方法還得重新設定端口什麼的比較麻煩,能不能直接修改docker容器的配置檔案呢?這樣顯然比較暴力風險比較大。
使用docker inspect找到容器rust_cms配置檔案所在目錄
目錄下的<code>config.v2.json</code>就是容器的配置檔案了,如果你使用的docker版本比較低也可能是config.json。
找到檔案就動手修改吧,修改前請停止docker服務并先備份config.v2.json檔案以防改失敗了好復原:
把檔案中的指令<code>/bin/bash</code>替換為新的指令:
再重新開機下docker服務:
systemctl start docker
檢視容器是否啟動成功:
從狀态資訊:
Restarting (101) 4 seconds ago
可以看出容器啟動失敗了,這是為什麼呢?
是啟動web伺服器時忘記設定目前目錄了,索性在config.v2.json檔案裡把目前工作目錄也改了:
再次啟動docker服務,就正常了:
如果執行指令比較麻煩,可能方式一還快些.
補充:
作業系統 centos 7
關注部落客即可閱讀全文