CentOS下Docker與.netcore(四)之 三劍客之一Docker-machine+jenkins簡單自動化部署


 CentOS下Docker與.netcore(一) 之 安裝

CentOS下Docker與.netcore(二) 之 Dockerfile

CentOS下Docker與.netcore(三)之 三劍客之一Docker-Compose

CentOS下Docker與.netcore(四)之 三劍客之一Docker-machine+jenkins簡單自動化部署

CentOS下Docker與.netcore(五)之 三劍客之一Docker-swarm集群

1.什么是Docker-machine

上一章講了Docker-compose,主要是在一台服務器上編排鏡像與容器。假如現在要求在兩台服務器上部署容器,一般的做法是登陸到兩台服務器分別部署,聽起來也沒問題。但如果從兩台服務器增加到10台,就特別麻煩,這種情況下,Docker-machine出現了。有了Docker-machine之后,就可以很方便的在多台服務器上部署。

2.安裝

現在有兩台服務器,我們要實現通過服務器A把鏡像部署到服務器B

服務器A安裝docker-machine,執行命令

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine

驗證安裝成功

3.服務器A創建SSH密鑰對,並發到服務器B上

[root@cys-test-centos ~]# ssh-keygen

所有選項都直接回車

[root@cys-test-centos ~]# ssh-copy-id xx.x.x.x    #xx.x.x.x為服務器B的ip

至此,實現了服務器A到B的免密登陸

4.docker-machine創建主機

在服務器A上輸入

docker-machine create  -d  generic  --generic-ip-address=XX.X.X.X  host1      #XX.X.X.X為服務器B的ip

這個過程會花費一些時間,等着就是了。

安裝完成,通過docker-machine ls查看列表

也可以登陸到服務器B上,查看docker是否安裝完成(docker-machine會給遠程服務器B安裝docker)

5.變更服務器A的環境變量

變更之后,接下來的操作都將應用與服務器B

6.安裝一個測試鏡像

 

  並去服務器B上校驗

  至此,docker-machine安裝完畢,這樣我們就可以通過一台服務器,創建多個主機,快速部署docker。但還是有點不方便,我們每次都要執行docker命令,為了解決這個問題,我們可以結合jinkins,實現自動部署。

 7.設計jenkins+docker自動化部署

下面開始實現這個想法。

  1)在docker hub上新建一個賬號(docker hub是一個可以上傳自己的鏡像的雲端網站,作用與github相對於代碼一樣),測試賬號登陸,並推送鏡像

  

  這樣我們就可以把本地的鏡像上傳到docker hub,別人就可以拉取然后運行

  上一章,我們新建了兩個鏡像

  

  我們把webdocker_s_provider推送到docker hub

  首先要進行tag打標簽,格式如下 docker   tag   鏡像名   dockerhub用戶名/鏡像名,然后push,格式 docker   push  新的鏡像名

  

  推送成功,我們登陸到dockerhub 查看一下

  

 

  我們可以登陸到服務器b,拉取一下,驗證成功

 

 

  2)創建項目,並創建Dockerfile

dockerfile內容如下:

FROM microsoft/dotnet:2.1-aspnetcore-runtime
MAINTAINER yishi.chen

LABEL description="microservice"
LABEL version="1.0"

ARG microport

WORKDIR /app
COPY bin/Release/netcoreapp2.0/publish/ .
EXPOSE $microport
ENTRYPOINT ["dotnet","MicroService.dll"]

  3)我們將.netcore代碼上傳到github(或私有git庫,svn私有庫)

  4)安裝jenkins  https://www.cnblogs.com/stulzq/p/9291237.html

  5)jenkins中新建一個freestyle project

  

 6.jenkins中配置新建的freestyle project 

 

詳細配置

dotnet publish -c Release

docker build -t microtest:1.0 --build-arg microport=1000 -f "$WORKSPACE/MicroService/Dockerfile" "$WORKSPACE/MicroService"

docker login -u *** -p ****

docker tag microtest:1.0 chenyishi/microtest:1.0

docker push chenyishi/microtest:1.0

/usr/local/bin/docker-machine env host1

eval $(/usr/local/bin/docker-machine env host1)

docker pull chenyishi/microtest:1.0
docker run -d -p "1000:1000" -e microport=1000 chenyishi/microtest:1.0

保存后,點擊buildnow

 

 等待build成功,去dockhub上驗證時候推送成功,去服務器B查看是否拉取成功

至此,實現了一個簡單的跨主機的簡單部署

 

下一章講一下docker-swarm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM