Docker Desktop啟動后容器自啟動關(guān)閉指南
一、問題現(xiàn)象
在使用 Docker Desktop 的時候,有些容器會在每次啟動 Docker Desktop 后自動啟動。
比如我本地有一個 JRebel License Server 容器:
bash jrebel-license-active-server
每次打開 Docker Desktop,它都會自動運行。
但是這個服務(wù)我并不是每次都需要用,所以希望它不要跟隨 Docker Desktop 自動啟動,而是在需要的時候手動啟動。
二、為什么容器會自動啟動?
Docker 容器是否會自動啟動,主要取決于它的 Restart Policy,也就是容器的重啟策略。
常見的重啟策略有下面幾種:
| 策略 | 含義 |
|---|---|
| no | 不自動重啟,Docker 啟動時也不會自動啟動容器 |
| always | Docker 啟動后自動啟動容器,容器退出后也會自動重啟 |
| unless-stopped | 除非手動停止,否則 Docker 啟動后會自動啟動容器 |
| on-failure | 只有容器異常退出時才自動重啟 |
如果一個容器每次 Docker Desktop 啟動后都會自動啟動,大概率是因為它的重啟策略被設(shè)置成了:
bash --restart=always
或者:
bash --restart=unless-stopped
三、查看當(dāng)前容器的重啟策略
可以使用下面的命令查看容器當(dāng)前的重啟策略:
bash docker inspect 容器名 --format ‘{{.HostConfig.RestartPolicy.Name}}'例如查看 jrebel-license-active-server:
bash docker inspect jrebel-license-active-server --format ‘{{.HostConfig.RestartPolicy.Name}}'如果輸出是:
bash always
或者:
bash unless-stopped
說明這個容器會有自動啟動的行為。
四、關(guān)閉容器自動啟動
使用下面的命令,把容器的重啟策略改成 no:
bash docker update --restart=no 容器名
例如:
bash docker update --restart=no jrebel-license-active-server
執(zhí)行成功后,終端一般會返回容器名稱:
bash jrebel-license-active-server
這就表示修改成功了。
五、驗證是否修改成功
再次執(zhí)行查看命令:
bash docker inspect jrebel-license-active-server --format ‘{{.HostConfig.RestartPolicy.Name}}'如果輸出是:
bash no
說明已經(jīng)設(shè)置成功。
以后啟動 Docker Desktop 時,這個容器就不會自動啟動了。
六、以后需要用的時候如何手動啟動?
關(guān)閉自動啟動之后,并不是刪除容器,只是讓它不再跟隨 Docker Desktop 自動啟動。
需要用的時候,可以手動啟動:
bash docker start jrebel-license-active-server
如果要停止它:
bash docker stop jrebel-license-active-server
七、Docker Desktop 圖形界面怎么操作?
也可以在 Docker Desktop 里手動操作:
- 打開 Docker Desktop
- 進入左側(cè) Containers
- 找到對應(yīng)容器
- 點擊右側(cè)藍色三角形按鈕啟動
- 點擊停止按鈕即可停止容器
不過修改“是否自動啟動”這種配置,用命令行更直接。
八、常用命令整理
查看所有容器
bash docker ps -a
查看正在運行的容器
bash docker ps
查看容器重啟策略
bash docker inspect 容器名 --format ‘{{.HostConfig.RestartPolicy.Name}}'關(guān)閉容器自啟動
bash docker update --restart=no 容器名
設(shè)置容器自動啟動
如果以后想恢復(fù)自動啟動,可以執(zhí)行:
bash docker update --restart=always 容器名
或者:
bash docker update --restart=unless-stopped 容器名
手動啟動容器
bash docker start 容器名
手動停止容器
bash docker stop 容器名
九、多個容器批量關(guān)閉自啟動
如果有多個容器都不想自動啟動,可以分別執(zhí)行:
bash docker update --restart=no jenkins docker update --restart=no redis-7.2 docker update --restart=no mysql-8.0.31 docker update --restart=no jrebel-license-active-server
不過需要注意:
像 MySQL、Redis、Jenkins 這種開發(fā)常用服務(wù),如果經(jīng)常使用,可以保留自動啟動。
像 JRebel License Server 這種不是每次都需要用的服務(wù),可以設(shè)置成不自動啟動,需要時再手動啟動。
十、實際案例
我這次遇到的問題是:
Docker Desktop 里有一個容器:
bash jrebel-license-active-server
每次啟動 Docker Desktop 時,它可能會自動啟動。
我執(zhí)行了下面的命令:
bash docker update --restart=no jrebel-license-active-server
終端返回:
bash jrebel-license-active-server
說明修改成功。
然后可以用下面命令再次確認:
bash docker inspect jrebel-license-active-server --format ‘{{.HostConfig.RestartPolicy.Name}}'如果結(jié)果是:
bash no
就表示以后 Docker Desktop 啟動時,這個容器不會自動啟動了。
十一、總結(jié)
Docker 容器是否會自動啟動,主要看它的重啟策略。
如果不希望容器跟隨 Docker Desktop 自動啟動,執(zhí)行:
bash docker update --restart=no 容器名
如果想確認是否成功,執(zhí)行:
bash docker inspect 容器名 --format ‘{{.HostConfig.RestartPolicy.Name}}'輸出為:
bash no
就說明設(shè)置成功。
以后需要使用該容器時,再手動啟動即可:
bash docker start 容器名
到此這篇關(guān)于Docker Desktop啟動后容器自啟動關(guān)閉指南的文章就介紹到這了,更多相關(guān)Docker Desktop容器自啟動關(guān)閉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Dockerfile指令與基本結(jié)構(gòu)的講解
今天小編就為大家分享一篇關(guān)于Dockerfile指令與基本結(jié)構(gòu)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
解決Docker報錯:“docker build“ requires exactly&nb
這篇文章主要介紹了解決Docker報錯:“docker build“ requires exactly 1 argument.具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Windows10系統(tǒng)下Docker默認存儲位置更改方案
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Docker默認存儲位置更改方案的相關(guān)資料,在Docker中存儲路徑是一個重要的話題,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-08-08
Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口的問題解決
haproxy提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案,這篇文章主要介紹了Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口,需要的朋友可以參考下2023-04-04
Docker Compose一鍵ELK部署的方法實現(xiàn)
這篇文章主要介紹了Docker Compose一鍵ELK部署的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Docker+Jenkins+Gitee自動化部署maven項目的實現(xiàn)
本文主要介紹了Docker+Jenkins+Gitee自動化部署maven項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

