新聞中心
如何使用不同的命令啟動(dòng)已經(jīng)停止運(yùn)行的 docker 容器?
作者:somenzz 2022-05-06 07:20:38
云計(jì)算
云原生 使用 Python 容器,不修改系統(tǒng)的一個(gè)文件,安全環(huán)保,不想用了,直接停止刪除容器,再刪除鏡像。

為大竹等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及大竹網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、大竹網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
你好,我是征哥,我相信不少人都會(huì)遇到這樣的問題,容器本來運(yùn)行的好好的,可是有一天報(bào)錯(cuò)退出了,重啟容器依然報(bào)錯(cuò),因?yàn)槟J(rèn)命令會(huì)崩潰,這意味著我無法啟動(dòng)容器后使用 docker exec。
今天分享:如何不重新構(gòu)建鏡像的情況解決容器報(bào)錯(cuò)的問題,只需要兩步。
第一步,將報(bào)錯(cuò)的容器保存至新的鏡像
這一步是為了保存之前對(duì)容器的變更,如果沒有對(duì)容器寫入東西,這一步可以忽略。
先查看報(bào)錯(cuò)的容器,記錄它的 CONTAINER_ID:
docker ps -a
然后將容器保存至新的鏡像:
docker commit $CONTAINER_ID somenzz/image_xxx_new
第二步,從新的鏡像啟動(dòng)一個(gè)新的命令
比如說啟動(dòng)一個(gè) shell,去修復(fù)容器:
docker run -ti --entrypoint=sh somenzz/image_xxx_new
這里用到了 entrypoint[1],在構(gòu)建鏡像的時(shí)候,我們可以使用 CMD 或者 ENTRYPOINT 配置容器啟動(dòng)時(shí)的執(zhí)行命令,但這兩者有所不同:
- CMD 命令設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令及其參數(shù),但 CMD 設(shè)置的命令能夠被 docker run 命令后面的命令行參數(shù)替換。
- ENTRYPOINT 配置容器啟動(dòng)時(shí)的執(zhí)行命令,不會(huì)被忽略,一定會(huì)被執(zhí)行,即使運(yùn)行 docker run 時(shí)指定了其他命令。
我用 Python 容器的方法
容器就是運(yùn)行環(huán)境的打包。我在自己的服務(wù)器上安裝了 Docker,那想獲取一個(gè) Python 環(huán)境,太簡(jiǎn)單了:
首先下載 Python 鏡像,目前最新是 3.10.4,你可以 docker search python 查看。
sudo docker pull python
然后啟動(dòng)一個(gè)后臺(tái)永不退出的容器:
sudo docker run --name mypython -dt python /bin/bash
然后就可以隨意使用 Python 了:
sudo docker exec -it mypython python [宿主機(jī)器的 Python 腳本,非容器內(nèi)部]
如果要安裝依賴:
sudo docker exec -it mypython pip install requests
這樣使用 Python 容器,不修改系統(tǒng)的一個(gè)文件,安全環(huán)保,不想用了,直接停止刪除容器,再刪除鏡像。
標(biāo)題名稱:如何使用不同的命令啟動(dòng)已經(jīng)停止運(yùn)行的Docker容器?
標(biāo)題鏈接:http://fisionsoft.com.cn/article/ccicpjo.html


咨詢
建站咨詢
