docker運行nginx使用daemon off實例分析
問題
1.docker容器跑著為啥會掛掉?
docker 容器預設會把容器內部第一個進程,也就是pid=1的程式作為docker容器是否正在運作的依據,如果docker 容器pid掛了,那麼docker容器就會直接退出。
2.docker run的時候把command最為容器內部命令,如果你使用nginx,那麼nginx程式將後台運行,這個時候nginx並不是pid為1的程序,而是執行的bash,這個bash執行了nginx指令後就掛了,所以容器也就退出了,和你這個一樣的道理,pm2 start 過後,bash 的pid為1,那麼此時bash執行完以後會退出,所以容器也就退出了。
下面我使用實例告訴why we do this! !
touch file get_pid
echo "pid of this script: $$" echo "ppid of this script: $ppid" echo "uid of this script: $uid" #nginx -g 'daemon off;'
此時我們啟動容器去執行這個sh檔
odtoy:~ zhaojunlike$ eval `docker-machine env default` godtoy:~ zhaojunlike$ cd workspace/ godtoy:workspace zhaojunlike$ ls docker nodejs php pid_get godtoy:workspace zhaojunlike$ vim pid_get godtoy:workspace zhaojunlike$ docker run -v `pwd`/pid_get:/pid_get:ro --rm --workdir=/ nginx bash /pid_get pid of this script: 1 ppid of this script: 0 uid of this script: 0 godtoy:workspace zhaojunlike$
在容器執行完pid_get 後,容器也就自動退出了,這時候,印出了目前的bash運行的pid是1。
所以,如果我們想讓容器不掛掉,那麼非守護進行的執行是必須得,當然下面也能讓一個容器內部,執行
godtoy:workspace zhaojunlike$ docker run -it nginx bash root@a8baa5fe77f0:/# nginx root@a8baa5fe77f0:/# godtoy:workspace zhaojunlike$
我們使用-it參數可以連接到容器內部的管道,然後我們在容器內部使用nginx指令。最後ctrl p q
退出容器後,容器依然運作。
以上是docker運行nginx使用daemon off實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

要獲取 Docker 版本,您可以執行以下步驟:運行 Docker 命令“docker --version”來查看客戶端和服務器版本。對於 Mac 或 Windows,還可以通過 Docker Desktop GUI 的“版本”選項卡或“關於 Docker Desktop”菜單查看版本信息。

創建 Docker 鏡像步驟:編寫包含構建指令的 Dockerfile。在終端中構建鏡像,使用 docker build 命令。標記鏡像,使用 docker tag 命令分配名稱和標籤。

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

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

查看 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

可切換到國內鏡像源,步驟如下:1. 編輯配置文件 /etc/docker/daemon.json,添加鏡像源地址;2. 保存退出後,重啟 Docker 服務 sudo systemctl restart docker,即可提升鏡像下載速度和穩定性。

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