使用一個容器管理多個應用程式服務進程?還是每個服務進程建立一個容器?
各區別是?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
推薦伺服器管理工具雲端幫手
推薦一款神器應該可以幫到你,雲端幫手是一款功能強大的全面集中化管理雲端主機軟體。不只是相容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經常更新的情況下應該把兩個分開, 如果穩定版, 可以用幾年不更新的就放一起吧.
推薦伺服器管理工具雲端幫手
推薦一款神器應該可以幫到你,雲端幫手是一款功能強大的全面集中化管理雲端主機軟體。不只是相容Linux系統,Windows也是可以用的。實際上使用功能還是挺不錯的,因為功能全面且安裝簡單,基本上都是傻瓜式一鍵搞定,中間添加雲主機的話,首次要添加探針,以後就基本可以在面板上操作了,這個是挺方便的。主流雲那幾個基本上我都試過沒問題,系統也沒問題,這個倒是挺省心的,不會說存在什麼雲商的或者係統的就用不了,又要另外找軟體。大致功能如下:
1.批量管理多台雲端主機;
2.相容性強大,相容於市面基本所有的雲端商雲端主機,相容作業系統;
3.操作簡單,視覺化介面預覽資源、一鍵修復、一鍵部署;
4. 可以遠端登入雲端主機FTP桌面,處理雲端主機上的檔案;
5.監控和,資源還有警告功能,這個是挺好的,不用盯著看;
6.系統修復功能,這個是挺實用也比較必須的;
7.免費使用。總得來說功能還挺全的,不存在需要又要另外找軟體的尷尬,一個雲幫手軟體基本上滿足了所有需求。
docker中的業務怎麼拆,拆多細,實際上是個見仁見智的事情。
例如gogs的docker容器,啟動瞭以下幾個東西:
解釋一下,一般容器啟動如下東西:
對個人:
但是實際上,生產環境中,不能這麼做。
至少,即便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經常更新的情況下應該把兩個分開, 如果穩定版, 可以用幾年不更新的就放一起吧.