Docker微服務-映象構建交付和使用Rancher進行容器建立管理
先來架構,如圖:

1.前端出口服務為阿里SLB
2.Zookeeper叢集為整個微服務環境提供註冊中心,Zookeeper叢集每個znode的IP固定,也同樣由config-service服務配置。
3.集中配置服務config-service,由git集中管理配置檔案,config-service配置對映宿主機某個目錄。配置如需修改直接Git中修改,觸發宿主機對映的目錄中進行git pull操作,然後重啟對應的provider,配置即可生效。
4.facade作為分發器做分發服務。
微服務工作流程:
1)provider啟動,讀取寫死的config-service配置服務,從配置服務中獲取到Zookeeper地址,進行註冊。
2)請求由阿里SLB分發至對應微服務facade,閘道器前往Zookeeper叢集註冊中心獲取可用服務。
3)獲取到可用provider後,facade進行分發請求,策略為輪詢。
4)如後端provider掛了,無法提供服務,Zookeeper會自動剔除該服務的註冊。
建立微服務基礎執行環境,gateway閘道器、Zookeeper註冊中心、config-service配置基礎執行環境。開始構建以上基礎執行環境:
一、建立zookeeper3.4.10叢集服務
需包含了jdk和配置好環境變數的映象,jdk1.8映象。
jdk1.8映象交付到阿里雲Docker Registry倉庫
Docker Rancher宿主機
1.下載jdk1.8.0_25.tar包,自行下載。
建立jdk構建build目錄
mkdir -p /data/docker/ms-jdk ll -rw-r--r-- 1 root root 155 Dec 29 15:11 dockerfile drwxr-xr-x 9 root root 268 Nov 172017 jdk1.8.0_25
2.編寫dockfile
cat dockerfile
FROM <a href="https://www.linuxidc.com/topicnews.aspx?tid=14" target="_blank" title="CentOS">CentOS</a> MAINTAINER jdk1.8 "[email protected]" ADD jdk1.8.0_25/ /usr/local/jdk1.8 ENV JAVA_HOME /usr/local/jdk1.8 ENV PATH $JAVA_HOME/bin:$PATH
3.構建
[root@rancher-qa ms-jdk]# docker build -t ms/jdk1.8:v1 . Sending build context to Docker daemon308.6MB Step 1/5 : FROM centos latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest ---> 1e1148e4cc2c Step 2/5 : MAINTAINER jdk1.8 "[email protected]" ---> Running in 74ba397d2ab5 ---> 57601effbcb9 Removing intermediate container 74ba397d2ab5 Step 3/5 : ADD jdk1.8.0_25/ /usr/local/jdk1.8 ---> e960522c0399 Removing intermediate container 9408672a94d9 Step 4/5 : ENV JAVA_HOME /usr/local/jdk1.8 ---> Running in 42d9c2b3239c ---> 9bb3badf22e0 Removing intermediate container 42d9c2b3239c Step 5/5 : ENV PATH $JAVA_HOME/bin:$PATH ---> Running in d8af2f726409 ---> 00d3c71ae0be Removing intermediate container d8af2f726409 Successfully built 00d3c71ae0be Successfully tagged ms/jdk1.8:v1
docker images 檢視

4.登入阿里雲容器映象服務
建立映象倉庫名稱ms-jdk1.8

5.映象push到阿里雲Docker Registry
切換到rancher/server
登入到阿里雲Docker Registry
登入Docker Registry -> 打tag -> push到Docker Registry
[root@rancher-qa ms-jdk]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password: ******** Login Succeeded [root@rancher-qa ms-jdk]# [root@rancher-qa ms-jdk]# docker tag 00d3c71ae0be registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-jdk1.8:v1.0 [root@rancher-qa ms-jdk]# docker push registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-jdk1.8:v1.0 The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-jdk1.8] 96f6833b8de8: Pushed 071d8bd76517: Pushed v1.0: digest: sha256:1c2f642e7e49cd607c36032612efcd875c191abc5edb642d7e86483d1d5b392d size: 742
檢視:

至此,ms-jdk1.8映象交付完成。
zookeeper3.4.10叢集建立,並將Zookeeper3.4.10映象交付到阿里雲Docker Registry倉庫。
1.zookeeper3.4.10叢集構建前提準備:
zookeeper3.4.10叢集需其配置檔案中指定各個選舉節點的ip和埠,並且zookeeper叢集中的datadir(zoo.cfg配置中:dataDir=/tmp/zookeeper)中,需指定節點的myid,才能完成Zookeeper叢集搭建。在不使用docker link功能前提下,容器化Zookeeper叢集,需要解決:
1).myid問題。
2).Zookeeper叢集節點(leader、follower)選舉配置。
可使用docker內建的volume功能,將配置檔案和Zookeeper的datadir對映至宿主機進行管理。
如在rancher中:

所以,宿主機必須存在:
1) zookeeper-config/,目錄為Zookeeper所有配置檔案,包含叢集的選舉節點IP和選舉埠,主要zoo.cfg檔案中。
ll zookeeper-config/ total 16 -rw-r--r-- 1 root root535 Jan4 17:43 configuration.xsl -rw-r--r-- 1 root root 2161 Jan4 17:43 log4j.properties -rw-r--r-- 1 root root 1012 Jan4 17:43 zoo.cfg -rw-r--r-- 1 root root922 Jan4 17:43 zoo_sample.cf
2) zookeeper-data01/,目錄對應zookeeper叢集中的datadir,有存放一個myid檔案,Zookeeper叢集啟動後產生的資料也會持久化到此宿主機目錄下。Zookeeper叢集有3個znode節點,所以datadir有:
zookeeper-data02/
zookeeper-data03/
ll /data/docker/ drwxr-xr-x 3 root root 48 Jan5 17:25 ms-zookeeper3.4.10 drwxr-xr-x 2 root root 92 Jan5 16:54 zookeeper-config drwxr-xr-x 2 root root 18 Jan4 17:59 zookeeper-data01 drwxr-xr-x 2 root root 18 Jan4 18:02 zookeeper-data02 drwxr-xr-x 2 root root 18 Jan4 18:02 zookeeper-data03
2.映象構建
2.1 下載zookeeper-3.4.10.tar.gz包
wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
建立zookeeper-3.4.10構建build目錄
mkdir -p /data/docker/ms-zookeeper3.4.10/ -rw-r--r--1 root root207 Jan4 18:58 dockerfile drwxr-xr-x 10 root root 4096 Mar 232017 zookeeper-3.4.10
2.2 編寫dockfile
vim /data/docker/ms-zookeeper3.4.10/dockerfile
FROM ms/jdk1.8:v1 MAINTAINER zookeeper3.4.10 "[email protected]" ADD zookeeper-3.4.10/ /usr/local/zookeeper/ WORKDIR /usr/local/zookeeper ENTRYPOINT ./bin/zkServer.sh start &&tail -f zookeeper.out
其中zookeeper-3.4.10目錄新增至映象中,然後交付。但只是一個Zookeeper執行的模板,具體配置可通過volume,用宿主機的配置覆蓋映象中的配置。
2.3 構建,映象
cd /data/docker/ms-zookeeper3.4.10 docker build -t ms/zookeeper3.4.10:v1 . docker images | grep zook ms/zookeeper3.4.10v1cb1bea8cf3d523 hours ago567MB registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-msv1cb1bea8cf3d523 hours ago567MB
映象執行,本地docker本身命令列啟動Zookeeper容器
[root@rancher-qa docker]# docker run --name zookeeper01 -it -v /data/docker/zookeeper-config/:/usr/local/zookeeper/conf/ -v /data/docker/zookeeper-data01/:/tmp/zookeeper/ ms/zookeeper3.4.10 /bin/bash
以上docker命令列啟動卷對映目錄正常,宿主機目錄能對映到容器中。但rancher中用UI介面進行卷對映時,發現宿主機對映的目錄在容器中並未對映到。待解決。

此問題是由於,rancher有兩臺主機,而容器都執行在未進行設定對映目錄的宿主機中。此問題困擾近一週時間,<_>
2.4 登入阿里雲容器映象服務
建立映象倉庫名稱tmp-zookeeper-ms

2.5 zookeeper映象push到阿里雲Docker Registry
切換到rancher/server
登入到阿里雲Docker Registry
登入Docker Registry -> 打tag -> push到Docker Registry
[root@rancher-qa ms-zookeeper3.4.10]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password: Login Succeeded [root@rancher-qa ms-zookeeper3.4.10]# [root@rancher-qa ms-zookeeper3.4.10]# docker tag cb1bea8cf3d5 registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-ms:v1 [root@rancher-qa ms-zookeeper3.4.10]# [root@rancher-qa ms-zookeeper3.4.10]# docker push registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-ms:v1 The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-ms] ed1b06ecb437: Pushed 96f6833b8de8: Mounted from xmbaby-tmp/ms-jdk1.8 071d8bd76517: Mounted from xmbaby-tmp/ms-jdk1.8 v1: digest: sha256:c55b36fb410d7db9409e3ca4fb27e0d8d2d05e1970d99270ff9d5a6d8ee25e0b size: 954 [root@rancher-qa ms-zookeeper3.4.10]# docker images | grep zook registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-mslatestcb1bea8cf3d58 days ago567MB registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-zookeeper-msv1cb1bea8cf3d58 days ago567MB ms/zookeeper3.4.10latestcb1bea8cf3d58 days ago567MB ms/zookeeper3.4.10v1cb1bea8cf3d58 days ago567MB
2.6檢視

至此,tmp-zookeeper-ms映象交付完成。
3.這裡選擇rancher來做docker叢集的管理和編排,除了使用docker本身命令列介面啟動Zookeeper容器外,推薦使用rancher UI介面進行容器管理和建立。
在rancher中,新增zk1、zk2、zk3容器服務:

建立zk1:

卷管理:

設定容器主機:

另兩個znode節點,zk2、zk3同理操作,只是路徑和名稱做稍微改動。
進入Zookeeper容器中檢視啟動資訊,檢視Zookeeper機器znode2為叢集leader:

二、建立config-service服務
集中配置服務config-service,作為公司微服務基礎執行環境部分,需要優先單獨建立。
為做好後期集中打包,使用maven工具,需先建立一maven映象,該maven映象集成了公司自己nexus服務,任何開發都可通過此映象進行快速打包本地的開發環境的jar包。
Docker Rancher宿主機
1.下載apache-maven-3.3.9-bin.tar.gz包,自行下載。
建立maven構建build目錄
mkdir -p /data/docker/maven3.3.9 ll drwxr-xr-x 6 root root99 Jan 13 15:36 apache-maven-3.3.9 -rw-r--r-- 1 root root 8491533 Jan 13 15:34 apache-maven-3.3.9-bin.tar.gz -rw-r--r-- 1 root root393 Jan 13 16:53 dockerfile drwxr-xr-x 9 root root268 Jan 13 15:43 jdk1.8.0_25 -rwxr-xr-x 1 root root55 Jan 13 16:53 maven.sh
2.編寫dockfile
cat dockerfile
FROM ms/jdk1.8:v1 MAINTAINER maven-3.3.9 "[email protected]" RUN mkdir /usr/local/maven-3.3.9/ #&& mkdir /usr/local/jdk1.8/ #因基於ms/jdk1.8:v1映象,已有的jdk環境 ADD apache-maven-3.3.9/ /usr/local/maven-3.3.9/ #ADD jdk1.8.0_25/ /usr/local/jdk1.8/ ADD maven.sh /tmp/ ENV JAVA_HOME /usr/local/jdk1.8 ENV M2_HOME /usr/local/maven-3.3.9 ENV PATH $JAVA_HOME/bin:$M2_HOME/bin:$PATH CMD /tmp/maven.sh
cat maven.sh
#!/bin/bash cd /data/httpd/${msname} mvn clean install
3.構建
[root@rancher-qa maven3.3.9]# docker build -t ms/maven-3.3.9 . Sending build context to Docker daemon327.2MB Step 1/9 : FROM ms/jdk1.8:v1 ---> 00d3c71ae0be Step 2/9 : MAINTAINER maven-3.3.9 "[email protected]" ---> Using cache ---> 80a6d05eae5a Step 3/9 : RUN mkdir /usr/local/maven-3.3.9/ #&& mkdir /usr/local/jdk1.8/ ---> Using cache ---> 92ac17c859a8 Step 4/9 : ADD apache-maven-3.3.9/ /usr/local/maven-3.3.9/ ---> Using cache ---> fa81af79d732 Step 5/9 : ADD maven.sh /tmp/ ---> Using cache ---> 034053775e26 Step 6/9 : ENV JAVA_HOME /usr/local/jdk1.8 ---> Using cache ---> ad8e78b5a021 Step 7/9 : ENV M2_HOME /usr/local/maven-3.3.9 ---> Running in cfae5d0a6e53 ---> ccfcc8638e43 Removing intermediate container cfae5d0a6e53 Step 8/9 : ENV PATH $JAVA_HOME/bin:$M2_HOME/bin:$PATH ---> Running in 30b2f568c1a3 ---> 27e68ef34a42 Removing intermediate container 30b2f568c1a3 Step 9/9 : CMD /tmp/maven.sh ---> Running in db48895f5502 ---> 21c6f1a3b0cf Removing intermediate container db48895f5502 Successfully built 21c6f1a3b0cf Successfully tagged ms/maven-3.3.9:latest [root@rancher-qa maven3.3.9]# [root@rancher-qa maven3.3.9]# docker images | grep maven ms/maven-3.3.9latest21c6f1a3b0cf34 minutes ago519MB
執行此maven映象,打包命令示例:
[root@rancher-qa maven3.3.9]# docker run --rm -it -v /data/docker/ms-config/:/data/httpd/config-service/ -e msname=config-service ms/maven-3.3.9
說明:-v宿主機配置目錄/data/docker/ms-config/對映到容器/data/httpd/config-service/,-e定義maven.sh指令碼${msname}變數。
4.登入阿里雲容器映象服務
建立本地倉庫名稱ms-maven-3.3.9

5.映象push到阿里雲Docker Registry
切換到rancher/server
登入到阿里雲Docker Registry
登入Docker Registry -> 打tag -> push到Docker Registry
[root@rancher-qa ms-jdk]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password: ********** Login Succeeded [root@rancher-qa ms-jdk]# [root@rancher-qa ms-jdk]# docker tag 21c6f1a3b0cf registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-maven-3.3.9:latest [root@rancher-qa ms-jdk]# docker push registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-maven-3.3.9:latest The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/ms-maven-3.3.9] 607c588ba0d1: Pushed 2e4a77c00b58: Pushed 48c8f5464987: Pushed 96f6833b8de8: Mounted from xmbaby-tmp/tmp-zookeeper-ms 071d8bd76517: Mounted from xmbaby-tmp/tmp-zookeeper-ms latest: digest: sha256:9ceac47cffbf0c35ed66212a042ad10f3905cae924033caf4cbca8cbf4dbf4dd size: 1367
檢視:

至此,ms-maven-3.3.9映象交付完成。此映象交付完成後,後期基本無需改動,直接latest版本。
服務config-service映象開始交付:
1.1準備集中配置專案alaxiaoyou-config-service-0.0.1-SNAPSHOT.jar包,gitlab倉庫中。
建立config-service構建build目錄
mkdir -p /data/httpd/ms-config-service-tmp -rw-r--r-- 1 root root 276 Jan 14 17:34 dockerfile drwxr-xr-x 2 root root58 Jan 14 17:31 target
1.2 編寫dockfile
cat /data/httpd/ms-config-service-tmp/dockerfile
FROM ms/jdk1.8:v1 MAINTAINER tmp-config-service "[email protected]" RUN mkdir -p /data/httpd/ ADD target/alaxiaoyou-config-service-0.0.1-SNAPSHOT.jar /data/httpd/ WORKDIR /data/httpd/ ENTRYPOINT java -Xmx128m -Xss512k -jar alaxiaoyou-config-service-0.0.1-SNAPSHOT.jar
說明:ENTRYPOINT進入容器中執行此jar包。
1.3 構建,映象
docker build -t ms/config-service . Sending build context to Docker daemon21.2MB Step 1/6 : FROM ms/jdk1.8:v1 ---> 00d3c71ae0be Step 2/6 : MAINTAINER tmp-config-service "[email protected]" ---> Running in a3e0038610ff ---> 75d7642e16ec Removing intermediate container a3e0038610ff Step 3/6 : RUN mkdir -p /data/httpd/ ---> Running in 4b1ff33f58df ---> f43b916f6835 Removing intermediate container 4b1ff33f58df Step 4/6 : ADD target/alaxiaoyou-config-service-0.0.1-SNAPSHOT.jar /data/httpd/ ---> 99608e52e219 Removing intermediate container 0bd4d9130dd0 Step 5/6 : WORKDIR /data/httpd/ ---> 656a442c7ac2 Removing intermediate container d18fbdc1c6a6 Step 6/6 : ENTRYPOINT java -Xmx128m -Xss512k -jar alaxiaoyou-config-service-0.0.1-SNAPSHOT.jar ---> Running in 0371f9addb5d ---> c7375c40286e Removing intermediate container 0371f9addb5d Successfully built c7375c40286e Successfully tagged ms/config-service:latest [root@rancher-qa ms-config-service-tmp]# pwd /data/httpd/ms-config-service-tmp [root@rancher-qa ms-config-service-tmp]# docker images | grep config ms/config-servicelatestc7375c40286e2 minutes ago530MB registry.cn-hangzhou.aliyuncs.com/xmbaby-pre/ms-configlatest51a4521d758124 months ago578MB
1.4 登入阿里雲容器映象服務
建立映象本地倉庫名稱tmp-config-service-ms

1.5 映象push到阿里雲Docker Registry
切換到rancher/server
登入到阿里雲Docker Registry
登入Docker Registry -> 打tag -> push到Docker Registry
[root@rancher-qa ms-config-service-tmp]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password: ****** Login Succeeded [root@rancher-qa ms-config-service-tmp]# docker tag c7375c40286e registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-config-service-ms:latest [root@rancher-qa ms-config-service-tmp]# [root@rancher-qa ms-config-service-tmp]# docker push registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-config-service-ms:latest The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-config-service-ms] 76925e259a39: Pushed d31d3604ba1d: Pushed 96f6833b8de8: Mounted from xmbaby-tmp/ms-maven-3.3.9 071d8bd76517: Mounted from xmbaby-tmp/ms-maven-3.3.9 latest: digest: sha256:78c0489e045a1a9a7220ea941ca8b7fd6db348e5423e478a45ac2bbc2117c180 size: 1161
至此,tmp-config-service-ms映象交付完成。
-
tmp-config-service-ms映象啟動,統一用rancher編排UI工具來啟動。
tmp-config-service-ms服務啟動需依賴宿主機的目錄,這個目錄,是本地git倉庫專案,gitlab中為:[email protected]。provider配置修改,都通過gitlab進行修改,會進行更新到本地目錄中,重啟此provider即可生效。
2.1 啟動tmp-config-service-ms服務,rancher中操作。
建立服務tmp-config-service-ms:

設定卷:

設定容器主機名:

2.2 啟動tmp-config-service-ms容器服務。此provider只在啟動初,會找一次config-service,但此config-service服務為單點服務。不過,容器可快速銷燬和生成的特性,即使此config-service配置服務出現問題,也可立即自動重啟或手工銷燬有問題的容器,並重新生成新的config-service服務容器,此過程為秒級,是可接受配置服務為單點。
進入config-service服務容器,檢視啟動情況,日誌檢視:

三、建立gateway-service服務
閘道器gateway-service服務是整個微服務架構的入口,在構建provider前,必須建立先建立好閘道器服務。
git clone閘道器專案程式碼,[email protected]
1.建立閘道器專案目錄:
mkdir -p /data/httpd/ms-api-gateway-tmp/alaxiaoyou-api-gateway
[root@rancher-qa ms-api-gateway-tmp]# git clone [email protected] Cloning into 'alaxiaoyou-api-gateway'... remote: Counting objects: 1198, done. remote: Compressing objects: 100% (552/552), done. remote: Total 1198 (delta 423), reused 554 (delta 241) Receiving objects: 100% (1198/1198), 108.00 KiB | 0 bytes/s, done. Resolving deltas: 100% (423/423), done. [root@rancher-qa ms-api-gateway-tmp]# [root@rancher-qa ms-api-gateway-tmp]# ll total 0 drwxr-xr-x 4 root root 44 Jan 14 19:10 alaxiaoyou-api-gateway [root@rancher-qa ms-api-gateway-tmp]# pwd /data/httpd/ms-api-gateway-tmp [root@rancher-qa ms-api-gateway-tmp]# cd alaxiaoyou-api-gateway/ [root@rancher-qa alaxiaoyou-api-gateway]# [root@rancher-qa alaxiaoyou-api-gateway]# ll total 8 -rw-r--r-- 1 root root 4811 Jan 14 19:10 pom.xml drwxr-xr-x 3 root root18 Jan 14 19:10 src [root@rancher-qa alaxiaoyou-api-gateway]# [root@rancher-qa alaxiaoyou-api-gateway]# pwd /data/httpd/ms-api-gateway-tmp/alaxiaoyou-api-gateway
在gateway-service專案目錄下,執行閘道器程式碼打包命令:
docker run --rm -it -v /data/httpd/ms-api-gateway-tmp/alaxiaoyou-api-gateway:/data/httpd/gateway-service/ -e msname=gateway-service ms/maven-3.3.9 [root@rancher-qa alaxiaoyou-api-gateway]# docker run --rm -it -v /data/httpd/ms-api-gateway-tmp/alaxiaoyou-api-gateway:/data/httpd/gateway-service/ -e msname=gateway-service ms/maven-3.3.9 [root@rancher-qa alaxiaoyou-api-gateway]# ll total 58436 -rw-r--r-- 1 root root 59823092 Jan 14 19:27 alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar -rw-r--r-- 1 root root343 Jan 14 19:28 dockerfile drwxr-xr-x 3 root root20 Jan 14 19:28 gateway-service -rw-r--r-- 1 root root4811 Jan 14 19:10 pom.xml drwxr-xr-x 3 root root18 Jan 14 19:10 src
此打包命令,目前並未成功將包alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar打出,該包從其他機器cp過來。待解決。
2.建立閘道器專案dockerfile
vim /data/httpd/ms-api-gateway-tmp/alaxiaoyou-api-gateway/dockerfile
FROM ms/jdk1.8:v1 MAINTAINER gateway-service "[email protected]" RUN mkdir /data/httpd/ -p ADD gateway-service/target/alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar /data/httpd/ EXPOSE 80#此處雖然開啟了80埠對映,但是並沒有做link連結 WORKDIR /data/httpd/ ENTRYPOINT java -jar alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar
說明:ENTRYPOINT進入容器中執行此jar包。
3.構建,映象
[root@rancher-qa alaxiaoyou-api-gateway]# docker build -t ms/tmp-gateway-service . Sending build context to Docker daemon60.27MB Step 1/7 : FROM ms/jdk1.8:v1 ---> 00d3c71ae0be Step 2/7 : MAINTAINER gateway-service "[email protected]" ---> Using cache ---> bf3f97f0bda2 Step 3/7 : RUN mkdir -p /data/httpd/ ---> Running in da244cb64552 ---> 743c35c3c4d8 Removing intermediate container da244cb64552 Step 4/7 : ADD gateway-service/target/alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar /data/httpd/ ---> 9e45fe4b20a4 Removing intermediate container 8e3022556068 Step 5/7 : EXPOSE 80 ---> Running in e4dbaaa58778 ---> 299398d4af46 Removing intermediate container e4dbaaa58778 Step 6/7 : WORKDIR /data/httpd/ ---> 2e6bc4bdf39d Removing intermediate container 8428111522be Step 7/7 : ENTRYPOINT java -jar alaxiaoyou-api-gateway-0.0.1-SNAPSHOT.jar ---> Running in 8ce9968b7bef ---> c2f59d36052d Removing intermediate container 8ce9968b7bef Successfully built c2f59d36052d Successfully tagged ms/tmp-gateway-service:latest [root@rancher-qa alaxiaoyou-api-gateway]# [root@rancher-qa alaxiaoyou-api-gateway]# docker images|grep gate ms/tmp-gateway-servicelatestc2f59d36052d16 seconds ago569MB registry.cn-hangzhou.aliyuncs.com/xmbaby-test/test-gateway-mslatestd86bef9f01e914 months ago617MB
4.登入阿里雲容器映象服務
建立本地倉庫名稱:tmp-gateway-service-ms

5.映象push到阿里雲Docker Registry
切換到rancher/server
登入到阿里雲Docker Registry
登入Docker Registry -> 打tag -> push到Docker Registry
[root@rancher-qa alaxiaoyou-api-gateway]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password: Login Succeeded [root@rancher-qa alaxiaoyou-api-gateway]# docker tag c2f59d36052d registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-gateway-service-ms [root@rancher-qa alaxiaoyou-api-gateway]# [root@rancher-qa alaxiaoyou-api-gateway]# docker push registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-gateway-service-ms The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/xmbaby-tmp/tmp-gateway-service-ms] 29ffcfda7ded: Pushed 202759902df6: Pushed 96f6833b8de8: Mounted from xmbaby-tmp/tmp-config-service-ms 071d8bd76517: Mounted from xmbaby-tmp/tmp-config-service-ms latest: digest: sha256:825a0ec026c1f7c6eea01c2e5236c42dba11209b17ccd2ffad2b314c99b58b2d size: 1161
6.映象檢視:

至此,gateway-service-ms映象交付完成。
用rancher編排UI工具來���動gateway-service:
1.進入rancher應用棧新增服務。因為閘道器gateway服務需對映80埠至宿主機,因此,建立容器選擇“總是在每臺主機上執行一個此容器的例項”。對映80埠。新增關聯的目標服務。
閘道器服務gateway-service啟動會連線關聯的目標服務config-service,config-service是通過git管理的config配置專案來獲取配置資訊給閘道器服務。關聯Zookeeper叢集註冊服務。

2.自動重啟選擇“從不(僅啟動一次)”:

3.對於閘道器服務,可使用docker本身來管理記憶體分配,可進行動態調整:

4.進入容器檢視gateway-service服務啟動。

自此,閘道器服務gateway-service新增完成。
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2019-02/157106.htm