我描述了一個更精細的流浪/泊塢管道的位置:Using Ansible,Jenkins and docker to build fast test environments
結束語:
一個專業碼頭工人的管道應包括以下步驟:
- 基地形象建設 - 從Dockerfile構建鏡像,每當Dockerfile發生變化時觸發此構建。結果可以上傳到公共Dockerhub映像。例如。 Java JDK8 Base Image:yourname/baseimageJRe8
- 基本映像配置:構建配置的映像。包括你的java-maven-build工件和配置文件。只用於這一步穩定標記的Docker鏡像:yourname/baseImageJRe8:2.0-stable。結果必須上傳到PRIVATE Docker註冊表中,例如privateregistry.io/yourname/softwareStackMySoftware:2016-10-21-Build-210。
- 預置映像部署:從主機上的私有註冊表中提取映像。請記住,只能使用穩定的標記圖像。通過環境變量添加主機特定配置或在Docker卷內添加配置文件。最後啓動Docker容器。
一個專業的詹金斯的設置應包括:
- 一詹金斯站長:喬布斯的配置。絕對沒有生成處理器!
- 詹金斯奴隸的任意數量:建立碼頭圖像。是的,這個自然使用大量的資源。
正如您可能已經聽說沒有理智的方式在Docker中運行Docker。因此,您需要Docker-Machine(由cli docker-machine設置)或其他安裝了Docker的VM來構建Docker鏡像。
此外,在持續集成環境中構建碼頭圖像會產生大量停止和失敗的構建容器和(懸掛)圖像。您應該在安全的環境中執行此操作,以便在不影響生產部件的情況下安全地清潔機器。
但是有一個很大的誤解,Jenkins或者Docker內部的Jenkins奴隸無法構建Docker鏡像。您只需將Docker Cli安裝在Docker鏡像中並將命令發送到您的主機。例如,檢查這個Jenkins swarm slave圖像blacklabelops/swarm-dockerhost
1.我無法弄清楚你在說什麼,這聽起來像是你問Docker集線器有鉤子?不,我個人認爲詹金斯不應該在你的生產環境中。 3.值得與什麼相比?擁有自己的虛擬機?服務器?爲什麼不應該在一個容器中。 –
1.我不知道什麼是Docker Hub。只是爲了分享Dockerfile? 2.謝謝。 3.比擁有自己的虛擬機。 –
如果您不知道什麼是'Docker Hub',那麼爲什麼在設計中缺少它?與虛擬機相比,Docker容器更輕量級。考慮到你的問題,在設計解決方案之前,你應該考慮繼續學習Docker是什麼以及它是如何工作的 – agg3l