為什麼 docker 不執行 init 作為 lxc

為什麼 docker 不執行 init 作為 lxc

Docker 沒有運行 init。所以啟動時服務不會啟動。 Lxc 在 lxc-start 期間運行 init。不執行 init 並依賴supervisord 進行守護程式有哪些優點?

答案1

Docker 是一個應用容器,更專注於將應用程式作為容器分發。在此應用程式/進程正在運行裡面容器是唯一正在運行的進程,即它們的 init 進程。如果您的進程需要更多應用程式(mysql、mongodb 資料庫等),您不會在由一個init 守護程序管理的docker 容器內啟動這些應用程序,而是啟動更多docker 容器,每個容器都在docker容器內。

你可以試試http://phusion.github.io/baseimage-docker/它提供了一個簡單的 init 守護程序來在你的 docker 映像中運行更多進程(這是基於 Ubuntu 的)或者你可以嘗試 LXDhttp://www.ubuntu.com/cloud/lxd容器技術的使用更像是系統容器

答案2

這個問題是作為問題在 GitHub 上,並合併了一個拉取請求以允許init從 0.6.x 開始運行):

docker run $IMAGE /sbin/init

來源

init 未運行的最初原因(無效,因為0.6.x):

當啟動一個新容器時,docker mint 將自身限制為容器內的 /sbin/init,隱藏真正的 /sbin/init 並使其無法執行。

這個答案可能會提供更多幫助,並且Docker 指南可能會派上用場。

相關內容