Docker+jenkins小知識,講解通俗易懂,有必要收藏

2020-12-13 Kitty講測試

今天主要與大家分享關於Docker持續集成開發環境的搭建過程。持續集成是軟體開發中一個非常重要的環節,我們都知道持續集成的這種方式,不僅僅是影響軟體開發的效率,實際上還會對我們軟體開發的流程會產生一定的影響,例如:我們所選擇的構建的方式,那麼你的應用程式的部署的方式,軟體開發與測試需要不斷地對應用進行持續構建,這些都會受我們持續集成的構建的方案所影響。有些人可能會想,持續構建很熟悉基本上也就是基於jenkins,沒錯jenkins確實是目前持續集成中最為流程也比較常見的一種解決方案,不過我們今天並不是僅僅單純地講jenkins,而是想再引入另外一個比較新穎也比較火的概念,也就是docker,對於熱點概念比較熟悉的朋友對docker並不陌生,這幾乎是近期最熱點的一門技術之一。

那麼docker不像jenkins,docker場景應用是非常廣泛的,例如:我們常用的微服務或者容器化部署,實際上都離不開docker或者說都離不開容器。可能大家在平時的工作中或者學習中對docker也非常感興趣,想要去應用,但是有些同學可能沒有找到這種合適的入手點去試驗它,沒有找到一種合適的方式去應用它。我們今天在這裡主要與大家分享如何將Docker與持續集成結合起,來講講基於Jenkins+Docker+GIT把這幾項結合在一起的配置部署的一種方案,我們想搭建一套既能利用jenkins一個傳統,同時也主流的一和集成構建工具,同時我們又能引入一個Docker輕量級容器部署的方案,一方面我們想把傳統的持續集成的工具應用好,另外一方面我們也可以整合一些熱點的技術融合到一起,從而達到提升工作效率的目的。

不管是docker還jenkins目前在很多的IT企業中應用都非常廣泛,jenkins作為一款非常經典的集成發布集成構建的工具,它憑藉著自身的這種特別強大的功能,還是得益於它良好的設計,然後再結合眾多的插件,使得jenkins在實際生產過程中幾乎能夠實現你在工程持續構建的多種內容,而docker目前也是非常火熱,作為業內一個最火的容器解決方案之一,將兩者結合起來會帶來什麼樣效果呢?這也是我們今天需要去探索和展現的一些重點。

為什麼想要將docker與jenkins結合起來,在我們設計的場景裡,就是想利用jenkins這種強大的CI工具的特性,我們能夠獲得這種持續構建的便利,這也是jenkins作為傳統的一種應用場景,但是傳統構建的應用場景一般跑在獨立的伺服器上或者運行在虛擬機裡,相對來說還是比較笨重,儘管說我們記住jenkins這樣強大的工具,我們最終也能夠實現一鍵部署與自動化環境的搭建執行,但在資源方面的這個開銷和管理維護這種複雜度還是會存在一些不如意,那麼容器呢它比虛擬機也好或者伺服器也好,要輕量得多佔用資源又少,部署即快又方面,做事效率高,如果我們把服務存放在容器中運行,然後我們通過jenkins來把這個工程部署到容器裡面,這樣我們的服務就能夠實現輕量化,這就是我們基於docker來管理我們jenkins的資源然後基於jenkins來創建docker然後來管理這個docker容器。

環境搭建實現整體流程詳解圖如下:

流程詳解過程分析:

首先我們從人物開始,開發人員將開發完成的代碼提交到git伺服器之後,版本管理工具我們使用GIT,可以在jenkins中進行工程的構建,通過調用我們的shell Script的方式,觸發docker管理鏡像和容器的相關操作,然後把我們的工程部署到docker容器中去,然後把這個docker容器作為一個鏡像啟動起來,這樣等部署完成之後開發與測試就可以通過瀏覽器等方式來直接訪問我們的項目工程。在這整個流程中,除了docker這一部分之外,其它的流程都是一種傳統的jenkins部署持續集成構建的一種傳統流程,我們在部署與發布基本上都是在jenkins中來完成 ,Docker在這個過程中更多是給我們提供一種支撐,我們在jenkins中執行編譯,編譯完成之後的工程將代碼打包發布到docker裡面,然後在docker中運行我們的服務,這所有的過程都是基於jenkins強大的功能來實現的,這所有的流程操作都可以進行跟蹤的。

在我們設計的這個場景裡面,我們希望至少需要三類伺服器。首先,是需要提供一臺Git服務的伺服器,這裡可以使用網際網路上提供的github等相關版本管理工具服務。其實,需要一臺運行Jenkins服務的伺服器(Tomcat)。再次,一臺或若干Docker宿主機報備器主要用來提供服務運行的環境,可以是一臺或者多臺,主要為用戶提供服務運行的環境。總結:基於對Docker結合Jenkins的應用今天咱們就講解到這裡,有些同學在公司有接觸或者應用過這些技術相對比較容易接受,有些同學可能僅僅只聽過沒有應用過,關於Docker的一些基本概念與整理運作流程我們今天就講到這裡,只要大家認真努力閱讀上文都能詳細理解,如何任何問題歡迎留言。

相關焦點

  • 手把手教你利用Docker+jenkins部署你的網站
    中文版docker pull jenkinszh/jenkins-zh這裡選擇的是中文的鏡像創建存儲目錄並授權(很重要)mkdir /home/jenkins_homedocker run -d -p 9090:8080 -p 50000:50000 --name myjenkins -v /home/jenkins_home/:/var/jenkins_home -v /usr/bin/git:/usr/bin/git -v /root/envi/java:/usr/local/java -v /root/envi
  • 中小團隊基於Docker的devops實踐
    工程師本地開發,開發完成後提交代碼到代碼倉庫,[自動]觸發jenkins進行持續集成與部署,部署完成會收到結果郵件。項目運行過程中可通過日誌系統查看程序日誌,有異常會觸發監控系統發送報警。,通過Dockerfile打包成鏡像上傳到docker hub,然後觸發kubernetes滾動更新  鏡像包含了基礎鏡像+項目代碼,基礎鏡像就是根據項目運營環境打包的一個最小化的運行環境(不包含項目代碼),根據項目依賴的技術棧不同我們打包了很多不通類型的基礎鏡像,例如包含nginx服務的基礎鏡像,包含jdk+tomcat的基礎鏡像  如果發現程序上線出錯或有bug短時間內無法解決
  • Jenkins 憑證管理 - 看這一篇就夠了~
    password」 憑證創建 「SSH Username with private key」 憑證Credential ID 定義在 ID 欄位中,必須指定一個有意義的Credential ID- 例如 jenkins-user-for-xyz-artifact-repository。
  • 30分鐘帶你了解Web工程師必知的Docker知識
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言筆者之前和朋友一直在討論web技術方向的話題,也一直想了解web運維方面的知識,所以特意請教了一下我的朋友老胡,他對web運維和後端技術有非常多的實戰經驗,所以在本文中他也提供了不少幫助
  • 讓我們慶祝 Jenkins 對 Java 11 的支持
    所以你可以在 Java 11上運行 Jenkins:docker run -p 50000:50000 -p 8080:8080 jenkins/jenkins:2.164-jdk11但是,和往常一樣,您仍然可以使用其他方法啟動 Jenkins。請參閱 Java 11上運行 Jenkins 的更詳細文檔。
  • Jenkins插件-常用
    A、通用插件1、Embeddable Build Status Icon 連結:https://ci.jenkins-ci.org/job/lib-jira-api/badge/ | https://wiki.jenkins-ci.org/display/JENKINS/Embeddable
  • Docker是什麼?有什麼用途?及理論知識詳細說明
    有什麼用途?及理論知識詳細說明 代碼與遠方 發表於 2020-02-07 12:34:51 Docker是什麼?
  • Jenkins詳細教程
    這裡有愛,有分享,有工程師們的成長日記,點藍字「軟體測試面試匯總
  • Jenkins持續集成體系 | 最完整的介紹及資料
    簡單直接點,其實這篇文章就是告訴各位,Jenkins能解決什麼問題,有哪些應用場景,為何要掌握Jenkins,掌握Jenkins後有哪些好處
  • centos7下安裝docker
    昨天在知識星球回答星球人的問題的時候        提到了管理能力,列出了一些書單,如果你後期也想做管理,可以參考下面的書籍:  一個管理者所做的,就是帶隊伍,定戰略,拿結果,這裡推薦之前我做管理時候,對我影響比較大的書<<六頂思考帽>><<少有人走的路>><<創新者的窘境>><
  • Docker問答錄系列——Docker引擎相關問題(一)
    然後是回答問題,Docker的資料其實很豐富,特別是官方文檔講解非常詳細。https://docs.docker.com/另外,Docker有豐富的鏡像庫,Docker Hub,特別是官方(Official)的鏡像可以直接在生產環境中使用,製作比較精良。
  • Docker系列教程02-操作Docker容器
    [root@qll251 ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • 【Docker】系列教程02-操作Docker容器
    ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • Docker再體驗之Docker Compose,及它與Kubernetes的區別
    本文主要說Docker Compose,但是在這之前,有必要知道一下,Docker,Docker Compose,Docker Swarm,Kubernetes之間的區別。sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-composesudo chmod +x /usr
  • docker 門外初體驗——docker 安裝(一)
    二、安裝三、驗證四、總結前言重寫對docker的學習記錄,最主要的原因之一,花了大量的時間進行學習,形成一個從0至1的認識,但是工作中卻沒見有實際應用,導致所學的知識存活率很低,也為了豐富自身的技術體系一、docker是什麼?Docker 是一個開源的應用容器引擎。
  • Docker集群管理之Docker Compose
    Docker Compose的工程配置文件默認為docker-compose.yml,可通過環境變量COMPOSE_FILE或-f參數自定義配置文件,其定義了多個有依賴關係的服務及每個服務運行的容器。以下是一個簡單的配置文件:
  • Docker入門知識|Docker資源容器 與 VM虛擬機的區別與聯繫
    計算機系統軟體將所有硬體資源統一一處,再將這些資源化整為零分為多個小的計算區,每一個區都可以獨立運算。是不是人類聰明了,計算機也就被累得半死。對於linux/unix系統,也是如此,一個linux(unix系統)被分隔為多個相對獨立的小系統(麻雀雖小卻五臟俱全)。
  • docker常用命令詳解
    — docker [ps|inspect|top|attach|wait|export|port|rename|stat] 容器rootfs命令 — docker [commit|cp|diff] 鏡像倉庫 — docker [login|pull|push|search] 本地鏡像管理 —
  • docker的/var/run/docker.sock參數
    註:關於上述docker-compose.yml的作用和相關實戰,請參考《kafka的Docker鏡像使用說明(wurstmeister/kafka)》;預備知識搞清楚/var/run/docker.sock參數的前提是了解docker的client+server架構,如下是執行docker version命令的結果: