1.什麼是Docker-machine 上一章講了Docker-compose,主要是在一臺伺服器上編排鏡像與容器。假如現在要求在兩台伺服器上部署容器,一般的做法是登陸到兩台伺服器分別部署,聽起來也沒問題。但如果從兩台伺服器增加到10台,就特別麻煩,這種情況下,Docker-machine出現了。有 ...
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查看是否拉取成功
至此,實現了一個簡單的跨主機的簡單部署