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

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

CentOS下Docker與.netcore(二) 之 Dockerfilegit

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

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

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

1.什麼是Docker-machine

上一章講了Docker-compose,主要是在一臺服務器上編排鏡像與容器。假如如今要求在兩臺服務器上部署容器,通常的作法是登錄到兩臺服務器分別部署,聽起來也沒問題。但若是從兩臺服務器增長到10臺,就特別麻煩,這種狀況下,Docker-machine出現了。有了Docker-machine以後,就能夠很方便的在多臺服務器上部署。centos

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

驗證安裝成功app

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

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

全部選項都直接回車ssh

[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  http://www.javashuo.com/article/p-vjyyfiqf-z.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

相關文章
相關標籤/搜索