91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker容器為什么一直running

發布時間:2021-09-17 12:45:55 來源:億速云 閱讀:566 作者:chen 欄目:建站服務器

本篇內容主要講解“docker容器為什么一直running”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“docker容器為什么一直running”吧!

很多人第一次接觸 docker,都會有個錯覺,認為運行一個 container 就和運行一個虛擬機一樣, docker run 之后,該 container 即一直處于 running 狀態。其實,這種認識是完全錯誤的。

container 剛起來的時候,用戶可以通過 dockerfile 中的 CMD,ENTRYPOINT,或者直接在 docker run 后面接 comand,來指定 container 啟動時執行的程序。

如果指定的程序只是一個短暫的任務,比如 echo sorry。那么,sorry,container 在輸出 “sorry” 之后,就退出了。可以通過 docker inspect 看到,container 狀態變成了 Exited。一旦進入 Exited 狀態,以下命令將不再 work:

docker exec <container>
docker attach <container>
這兩個命令都需要 <container>處于 running!

官方文檔里有明確指出,docker start <container> 可以重新啟動 <container>,那它又可以轉成 running 狀態。

但是,剛剛 start 的 container 在啟動之后,會再一次執行 CMD 的命令。然后,它又很快完成任務,進入 Exited 狀態休息了。

如果啟動一個 container 之后,想把它當做一個虛擬機使用(也就說,使用 docker exec 在 container 內部環境中運行程序),那么一定要保證這個 container 一直處于 running 的狀態。

有兩種情況需要考慮:

1、container 在啟動的時候,CMD 沒有指定一些 service 任務

2、CMD 中指定了一些重要的 service,比如 web 服務

對于第二種情況,container 中一直運行著 web 服務器,作為一個 service,除非你主動 stop 它,這個 service 會一直跑著。于是,起來的 container 也會一直 running,于是執行 docker exec 沒有任何問題。

對于第一種情況,很明顯 container 不久之后就會 Exited。讓它一直處于 running 的方法至少有兩種:

既然 CMD 沒有指定啥 service,那么可以假設 CMD 指定的任務不重要,如果真的很重要,可以在制作 dockerfile 的時候通過 RUN 指定。所以,我們可以修改 CMD,比如

docker run <image> tail -f /dev/null

其中tail -f /dev/null 這個程序會一直 block 住,沒有外界 signal 的情況下,不會退出,于是 container 就一直 running

上面這種方法,畢竟有可能會覆蓋 dockerfile 中的 CMD,一個更好的方法是——docker commit.

docker run <image>
docker commit `docker ps -ql` <new_image>
docker stop `docker ps -ql`
docker rm `docker ps -ql`
docker run <new_image> tail -f /dev/null

其中,docker ps -ql 用于獲得最近創建的 container 的 id。這個方法的缺點在于,多創建了一個 image,占用空間。考慮 CI/CD 情形的話,這個缺點幾乎不能忍。

到此,相信大家對“docker容器為什么一直running”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

炉霍县| 梁平县| 马关县| 东山县| 武鸣县| 山东省| 崇礼县| 沽源县| 红原县| 双辽市| 平山县| 加查县| 海伦市| 庆阳市| 彰武县| 杂多县| 西峡县| 渭源县| 襄垣县| 兖州市| 昌江| 图们市| 娄底市| 策勒县| 夏河县| 银川市| 深水埗区| 关岭| 宜良县| 若羌县| 运城市| 三原县| 定安县| 揭西县| 安丘市| 苏尼特右旗| 德格县| 同江市| 中江县| 彩票| 分宜县|