暴力修改Docker容器的啟動命令

2021-10-18 19:21:23 字數 2483 閱讀 3263

事情是這樣的,我先執行了乙個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...