docker怎麼使容器不自動退出
在docker中,可以為容器新增一個常駐的前置進程,使容器不自動退出,可以使用docker容器的interactive和tty參數來將「sh/bash」指令作為潛性指令開啟,這樣容器就不會自動退出了。
本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。
docker怎麼使容器不自動退出
docker 容器的生命週期是同容器中的前置進程相關在一起的,這也是我們平時可能會遇到一些容器只是運行幾秒便自動結束的原因:因為容器中沒有一個常駐的前置進程,前置進程運行結束後,容器便自動退出了。
例如 docker hello-world
# 一闪而过 输出一堆东西 docker run --name hello-world hello-world # 可以看到 hello-world 容器已经退出了 docker ps -a
那怎麼可以讓容器不自動退出呢?如果我們想登錄一個純淨的容器 alpine/centos/ubuntu 之類的,在其基礎上安裝一些服務組件,然後在 commit 成自己的鏡像。
看網路上有不少方法是建立容器時執行一個 while(true) 的死循環(當然,sleep 一下)或是用 tail -f /dev/null 一類的,反正就是以開啟一個可以常駐的前置進程為目的。其實我們可以更優雅的使用 docker 容器的 interactive 和 tty 參數來將 sh/bash (*nix 系統必有)指令作為前置指令開啟,這樣容器就不會自動退出了。
例如使用 alpine 鏡像做為基礎鏡像,建立一個 alpine 系統小容器,讓其可以常駐運行,以便我們登入互動執行某些命令。
# 使用 alpine 系统镜像创建容器 # -i interactive=true 开启 stdin # -t tty=true 分配会话终端 # -d 守护模式 不加也可以 不加就直接进入容器中了 需要 ctrl+p+q 切出 # 不能 exit 哟, exit 相当于结束 sh 会话了 容器会退出的 docker run -it -d --name alpine alpine sh # alpine 肯定在运行 docker ps # 登入容器 docker exec -it alpine sh # apline 使用的 apk 作为包管理 # 安装个小火车 # 后续可以使用 docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl 生成新的镜像 apk add sl # 退出容器 注:-d 启动的才可以,如果没有 -d 启动直接进入的 sh终端 则不能退出,否则容器也会退出 exit
提交容器變更產生新的鏡像
docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl docker images # 有账号的话发布到 docker hub 上去 docker push big_cat/alpine_sl # 后续停止/启动容器时就不需要在指定 -it 参数了 docker stop alpine docker start alpine
提交容器變更產生新的鏡像
docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl docker images # 有账号的话发布到 docker hub 上去 docker push big_cat/alpine_sl
以上指令其實是藉助 sh/bash 會話終端機作為前置進程,使得容器不會自動退出。
如果你覺得在建立容器時如此書寫會很粗糙,沒關係,我們可以將這些都推給 docker-compose
docker-compose.yml version: '3' services: big_cat_alpine: container_name: big_cat_alpine image: alpine stdin_open: true # -i interactive tty: true # -t tty privileged: true entrypoint: ["sh"] # 执行 sh
建立容器 & 登入容器
docker-compose up -d big_cat_alpine ./ docker ps docker exec -it big_cat_alpine sh
透過 docker-compose 將那兩個參數傳入進去,編排後啟動服務容器。
推薦學習:《docker影片教學》
以上是docker怎麼使容器不自動退出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

查看 Docker 日誌的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令運行 /bin/sh 並查看日誌文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]
