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
上一章講了Docker-compose,主要是在一臺服務器上編排鏡像與容器。假如如今要求在兩臺服務器上部署容器,通常的作法是登錄到兩臺服務器分別部署,聽起來也沒問題。但若是從兩臺服務器增長到10臺,就特別麻煩,這種狀況下,Docker-machine出現了。有了Docker-machine以後,就能夠很方便的在多臺服務器上部署。centos
如今有兩臺服務器,咱們要實現經過服務器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
[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的免密登錄
在服務器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)
變動以後,接下來的操做都將應用與服務器B
並去服務器B上校驗
至此,docker-machine安裝完畢,這樣咱們就能夠經過一臺服務器,建立多個主機,快速部署docker。但仍是有點不方便,咱們每次都要執行docker命令,爲了解決這個問題,咱們能夠結合jinkins,實現自動部署。
下面開始實現這個想法。
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查看是否拉取成功
至此,實現了一個簡單的跨主機的簡單部署