docker - 使用一個容器管理多個應用程式服務進程?還是每個服務進程建立一個容器?
伊谢尔伦
伊谢尔伦 2017-04-25 09:01:28
0
5
1105

使用一個容器管理多個應用程式服務進程?還是每個服務進程建立一個容器?

各區別是?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(5)
cloudmam

推薦伺服器管理工具雲端幫手

哪儿

推薦一款神器應該可以幫到你,雲端幫手是一款功能強大的全面集中化管理雲端主機軟體。不只是相容Linux系統,Windows也是可以用的。實際上使用功能還是挺不錯的,因為功能全面且安裝簡單,基本上都是傻瓜式一鍵搞定,中間添加雲主機的話,首次要添加探針,以後就基本可以在面板上操作了,這個是挺方便的。主流雲那幾個基本上我都試過沒問題,系統也沒問題,這個倒是挺省心的,不會說存在什麼雲商的或者係統的就用不了,又要另外找軟體。大致功能如下:
1.批量管理多台雲端主機;
2.相容性強大,相容於市面基本所有的雲端商雲端主機,相容作業系統;
3.操作簡單,視覺化介面預覽資源、一鍵修復、一鍵部署;
4. 可以遠端登入雲端主機FTP桌面,處理雲端主機上的檔案;
5.監控和,資源還有警告功能,這個是挺好的,不用盯著看;
6.系統修復功能,這個是挺實用也比較必須的;
7.免費使用。總得來說功能還挺全的,不存在需要又要另外找軟體的尷尬,一個雲幫手軟體基本上滿足了所有需求。

習慣沉默

docker中的業務怎麼拆,拆多細,實際上是個見仁見智的事情。

例如gogs的docker容器,啟動瞭以下幾個東西:

s6-svscan-+-s6-supervise 
          |-s6-supervise---gogs 
          |-s6-supervise---sshd 
          `-s6-supervise---syslogd 

解釋一下,一般容器啟動如下東西:

1. PID=1的init进程,一般用supervisord,有些人用s6,例如上文中提到的gogs。此进程主要用于进程保活,进程重启。 
2. agent,一般用于监控,某些agent还有可能会被用于执行命令等,例如有些公司会在java容器内安插一个agent,在异常的时候可以执行jmap等操作。 
3. 业务进程,一般附属于init进程。很少见到有直接把业务进程当做主进程(init进程)的情况。因为主进程(init进程)跪掉,docker就跪了。 
4. 其他附属进程,例如上文中提到的gogs,会附属启动一个sshd。有些还会附属启动其他服务,例如syslogd。 

對個人:

举个栗子,gitlab 
对于个人,完全可以为了方便,把gitlab的所需要的所有服务,都放进同一个docker。 
包括: 
1. nginx 
2. sshd 
3. mysql 
4. gitlab(unicorn) 

但是實際上,生產環境中,不能這麼做。

至少,即便mysql不能託管給DBA,也不要放到同一個docker裡,最次,也得做關聯容器,mysql放在一個籃子裡,gitlab放在另一個籃子裡。

從業務上來說,已經不是同一個東西了。

從穩定性來說,也不建議。

這是使用docker的最底線的節操,不能再低了。

別人怎麼拆解gitlab的業務

大家讲道理

像marathon可以調度容器化服務的工具,有healthcheck功能,假如php-fpm掛了,healthcheck檢查的是php-fpm端口,maraton會殺掉這個容器,重新起一個instance。
假如所有進程都放一個容器裡,雖然可以建立多個health,但是healthcheak之間or的關係,假如nginx和php-fpm都掛了,healthcheck還是通過的。
也可以一個healthcheck透過nginx存取一個php頁面,這樣兩個服務進程都檢查到了。但是如果其中一個掛了,對容器進程重啟代價還挺大的。

曾经蜡笔没有小新

例如一個應該有一個web應用, 和一個資料庫元件,
在web經常更新的情況下應該把兩個分開, 如果穩定版, 可以用幾年不更新的就放一起吧.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!