摘要:使用和的時候,當我們啟動多個容器的時候,比如一個服務和一個服務,就有可能遇到競爭問題。但是這不是一件容易的事情。這有個內建的解決方案。
注:該文作者是 Chmouel,原文是 Avoiding race conditions between containers with docker and fig
該文我主要是意譯,詳細的看原文吧。
使用 Docker 和 Fig 的時候,當我們啟動多個容器的時候,比如一個 web 服務和一個 DB 服務,就有可能遇到競爭問題。正常來說,應該是 DB 先與 Web 服務啟動,但是因為 DB 沒有時間配置它自己,然后 web 服務已經啟動了,這樣就會造成 web 連接數據庫失敗。
理想中,app 應該等待 DB 已經設置好并且啟動后才開始連接 DB。但是這不是一件容易的事情。
docker 和 fig 的開發者已經注意到這個問題,并且在開發版已經有一些建議了:
https://github.com/docker/docker/issues/7445
這個主意就是 docker 必須等待暴露的端口已經打開了并且 listening 是可用的才告訴容器已經啟動。這不是容易做到的,因為 Docker 將很難弄清楚該端口是開放的。
這有個內建的 Python 解決方案。代碼如下:
function check_up() { service=$1 host=$2 port=$3 max=13 # 1 minute counter=1 while true;do python -c "import socket;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.connect(("$host", $port))" >/dev/null 2>/dev/null && break || echo "Waiting that $service on ${host}:${port} is started (sleeping for 5)" if [[ ${counter} == ${max} ]];then echo "Could not connect to ${service} after some time" echo "Investigate locally the logs with fig logs" exit 1 fi sleep 5 (( counter++ )) done }
在我 app 服務的 start.sh 腳本中,在啟動我的 web 服務之前,我像這樣使用它:
check_up "DB Server" ${DB_PORT_3306_TCP_ADDR} 3306
該方法的優勢是它能非常快速的知道端口是否打開。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26347.html
摘要:相關基于項目和項目,并遵循應用的十二因素風格。相關在設計上,項目盡量保持驅動和模塊化,以便模塊支持不同的實現方案。相關不僅可以管理眾多虛擬機,其計算服務還支持對的驅動,管理引擎的子項目還可用于通過模板管理容器。現已整合公司所支持的項目。 整理自《Docker技術入門與實踐》 PaaS(Platform as a Service) PaaS 是希望提供一個統一的可供所有軟件直接運行而無需...
摘要:目前,騰訊內部業務運行環境基本全部實現了容器化,在技術大會中,騰訊云高級產品經理劉永峰曾發表演講時代,公有云面臨的挑戰和機遇。本文中劉永峰展望了容器技術在游戲云的應用。 容器技術是一種輕量級虛擬化技術,能夠以很細的粒度,虛擬化獨立的系統運行環境。這就意味著,一臺物理的服務器,或者是一臺云上面的虛擬服務器,能夠同時運行成百上千個獨立的容器。基于游戲行業短平快的鮮明特點, 每一個游戲世界里面,每...
摘要:正在學習,留著看看轉自的大坑小洼成為云計算領域的新寵兒已經是不爭的事實,作為高速發展的開源項目,難免存在這樣或那樣的瑕疵。話不多說,一起來領略的大坑小洼。原因回歸至上文的第一個坑。如此一來,只要內部涉及到域名解析,則立即受到影響。 正在學習Docker,留著看看 轉自Docker的大坑小洼 Docker成為云計算領域的新寵兒已經是不爭的事實,作為高速發展的開源項目,難免存在這樣或那樣...
摘要:在浙江大學實驗室項目組負責的架構研究,以及做與技術結合的實踐。耿輝的最新動態,在的大會發布了等新特性,耿輝為大家帶來前沿的最新動態。介紹耿輝,華為開源軟件戰略專家。 showImg(https://segmentfault.com/img/bVkqvv); Docker 愛好者們,本周六 12.27 的 Docker Meetup #3 約么? 本次的杭州 Docker Meetu...
前言 以Docker為代表的容器技術縮短了企業應用從開發、構建到發布、運行的整個生命周期。Gartner推測到2022年將會有75%的全球化企業將在生產中使用容器化的應用(當前約為30%)。由于Docker往往難以獨立支撐起大規模容器化部署,因此誕生了Kubernetes等容器編排工具,解決了大規模容器的組織和管理難題。 但事實上,Kubernetes的使用體系還是非常復雜的,對于企業的開...
閱讀 2645·2023-04-26 02:17
閱讀 1619·2021-11-24 09:39
閱讀 1079·2021-11-18 13:13
閱讀 2649·2021-09-02 15:11
閱讀 2781·2019-08-30 15:48
閱讀 3412·2019-08-30 14:00
閱讀 2443·2019-08-29 13:43
閱讀 666·2019-08-29 13:07