2017-04-27 46 views
1

我想知道docker如何適合CI/CD。 我明白,在容器的幫助下,您可能會關注代碼,而不是依賴關係/環境。但是一旦您簽入代碼,您將期望像TeamCity,Jenkins或Bamboo這樣的工具負責集成構建,集成測試/單元測試和部署到目標服務器(在批准後),您將在其中運行相同的Docker容器映像構建的代碼。然而,在上述所有內容中,Docker在CI/CD週期中並不存在,儘管它在服務器執行時發揮作用。那麼,爲什麼我會看到文章將其列爲DevOps的其中一項。 我可能是錯的,因爲我不是DevOps大師,請指教!DevOps vs Docker

回答

3

Docker只是DevOps Engineers,DevOps從業者或其他任何您想調用它們的工具。 Docker所做的就是將代碼和代碼依賴關係封裝在一個單元(一個容器)中,該單元可以在Docker引擎安裝的任何地方運行。爲什麼這很有用?由於多種原因;但是在CI/CD方面,它可以幫助工程師將代碼配置從代碼中分離出來,減少花在執行依賴管理等方面的時間,可以使用它來擴展(當然還有一些其他工具的幫助)。名單繼續。

例如:如果我有一個代碼存儲庫,那麼在我的構建腳本中,我可以引入環境特定的依賴關係來創建一個在每個環境中功能行爲相同的Container,因爲我從同一個源存儲庫構建,但它可以包含一組環境的具體證書和配置文件等

又如:如果有多個構建服務器,你可以創建一批公用碼頭工人的容器,可以在您的CI中使用/ CD管道做在一個階段中通過拉下一個容器來做某件事。現在,您的構建服務器的唯一依賴關係成爲Docker Engine。您可以更改,添加,修改這些實用程序容器,而與另一個實用程序容器執行的任何其他操作無關。儘管如此,在您的CI/CD管道中使用Docker確實有很大的幫助。我認爲理解Docker是什麼以及Docker能做什麼更重要的是「如何在CI/CD中使用Docker」指南。雖然有一些常見的模式,但這一切都歸結爲您正在嘗試解決的問題,某些模式可能不適用於某個用例。

4

Docker簡化了「配置爲代碼」的概念。我可以編寫一個Dockerfile,它指定一個特定的基礎映像,它包含我需要的所有框架以及簽入到我的存儲庫中的自定義配置文件。然後,我可以使用Dockerfile構建該映像,將其推送到我的Docker註冊表,然後告訴目標主機提取最新的映像,然後運行映像。我可以自動完成所有這些工作,使用目標主機上只安裝了Linux的目標主機。

這是一個簡單的場景,說明Docker如何爲CI/CD做出貢獻。

+0

很好的解釋謝謝,重點! –

0

Docker對構建應用程序也很有用。如果您有多個具有不同依賴關係的應用程序,則可以通過在具有必要依賴關係的Docker容器中構建所有內容來避免CI計算機上存在大量依賴性和衝突。如果你需要在將來擴展你所需要的是運行你的CI工具的另一臺機器(如jenkins slave),並安裝docker。

當使用微服務時,這是非常重要的。一個應用程序可以依賴舊版本的框架,而另一個應用程序需要新版本。用容器這沒問題。

0

Docker刪除了我們都知道的來自地獄問題的矩陣,使得環境獨立於其容器技術。開源項目Docker通過簡化容器工作流程改變了遊戲規則,這導致了在軟件交付生命週期的各個階段(從開發到生產)使用容器的興奮。

它不只是關於容器,它涉及到構建Docker鏡像,管理你的鏡像和依賴於任何Docker註冊表,部署到編排平臺等等,它都在CI/CD過程之下。