事情是這樣的,我先執行了乙個docker容器,然後再這個docker容器中部署了乙個web應用:
可以看到容器rust_cms的執行命令是/bin/bash
,現在想讓這個容器自動啟動並且啟動後執行web服務.自動啟動可以使用docker update
更改啟動策略,如:
docker update --restart always rust_cms但docker update不支援修改
command
,每次docker重新啟動還是要手動去啟動web服務,怎麼辦呢?
想到的第乙個方法是使用docker commit
把當前容器儲存為映象再使用新的映象啟動乙個新的容器,在執行docker run
啟動新容器時就可以指定新的執行命令了。
感覺這個方法還得重新設定埠什麼的比較麻煩,能不能直接修改docker容器的配置檔案呢?這樣顯然比較暴力風險比較大。
使用docker inspect找到容器rust_cms配置檔案所在目錄
目錄下的config.v2.json
就是容器的配置檔案了,如果你使用的docker版本比較低也可能是config.json。
找到檔案就動手修改吧,修改前請停止docker服務並先備份config.v2.json檔案以防改失敗了好回滾:
把檔案中的命令/bin/bash
替換為新的命令:
再重啟下docker服務:
systemctl start docker檢視容器是否啟動成功:
從狀態資訊:
restarting (101) 4 seconds ago可以看出容器啟動失敗了,這是為什麼呢?
是啟動web伺服器時忘記設定當前目錄了,索性在config.v2.json檔案裡把當前工作目錄也改了:
再次啟動docker服務,就正常了:
如果執行命令比較麻煩,可能方式一還快些.
補充:作業系統 centos 7
docker version
client: docker engine - community
version: 20.10.3
api version: 1.41
go version: go1.13.15
git commit: 48d30b5
built: fri jan 29 14:34:14 2021
os/arch: linux/amd64
context: default
experimental: true
server: docker engine - community
engine:
version: 20.10.3
api version: 1.41 (minimum version 1.12)
go version: go1.13.15
git commit: 46229ca
built: fri jan 29 14:32:37 2021
os/arch: linux/amd64
experimental: false
containerd:
version: 1.4.3
gitcommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
version: 1.0.0-rc92
gitcommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
version: 0.19.0
gitcommit: de40ad0
修改Docker容器啟動配置引數
有時候,我們建立容器時忘了新增引數 restart always 當 docker 重啟時,容器未能自動啟動,現在要新增該引數怎麼辦呢,方法有二 1 docker 命令修改 docker container update restart always 容器名字 2 直接改配置檔案 首先停止容器,不然...
Docker修改容器映象的啟動命令
1 dockerfile的方式修改命令 2 直接通過命令改掉 首先先獲取到你要修改的映象的名稱,可以執行docker images 進行檢視,然後建乙個dockerfile,檔案內容如下 from image demo 要改動命令的映象 workdir root 執行命令的工作目錄路徑 cmd py...
docker容器無法啟動,修改容器內檔案2種方式
把docker容器中的配置檔案複製到主機中,然後在主機中修改,修改完成後再複製到docker容器中 1.複製docker容器的檔案到主機中 docker cp 容器id docker容器中配置檔案路徑 主機路徑docker cp mysql etc mysql my.cnf home my.cnf2...