寫一個簡單的springboot項目,提供一個接口,當訪問此接口時,返回當前容器IP,仍是貼一下代碼地址:https://github.com/995586041/jenkins.gitjava
@RequestMapping("/ip") public String getIp() throws UnknownHostException { System.out.println("log:------------>ip"); String ip = InetAddress.getLocalHost().getHostAddress(); return "您訪問的IP是:"+ip; }
打包成jar,假設爲 ip.jar 在下面使用python
如今已經有了jre8基礎鏡像以及測試jar包,若是沒有jre8基礎鏡像,想辦法搞一個,上篇文章有介紹怎麼本身製做一個,而後在這個基礎上製做出一個新的鏡像:git
所需文件:github
Dockerfileweb
FROM jre8 MAINTAINER goldleaf ADD ./ip.jar /root/ip.jar # RUN 構建鏡像過程當中觸發 # CMD 鏡像啓動後觸發 CMD java -jar /root/ip.jar
製做鏡像ipwebspring
docker build -t ipweb .
咱們是在swarm集羣的的某個節點上製做的鏡像,當create項目的時候,鏡像所在的機器能找到鏡像能夠正常啓動,可是其餘節點並無相應鏡像,而後節點就會去倉庫找,確定也是找不到的,因此咱們應該經制做好的鏡像push到私有倉庫裏面,而後全部節點去私有倉庫pull鏡像,這樣就能夠了docker
push鏡像到私有倉庫:瀏覽器
registry:192.168.20.200 master: 192.168.20.201 slave02: 192.168.20.202 slave02: 192.168.20.203
# 從新打tag docker tag ipweb 192.168.20.200:5000/ipweb # push到倉庫 docker push
3.1 啓動:springboot
docker service create -p 8085:8080 --replicas 3 --name ipweb --network central 192.168.20.200:5000/ipweb
3.2 查看服務bash
docker service ls
docker service ps ipweb
4 訪問測試
前臺訪問主節點:http://192.168.20.201:8085/ip,直接在瀏覽器看返回的IP,須要一直刷,纔可能看到不一樣IP,由於每次請求可能都發到同一個容器裏,我這裏用python模擬發送http請求:
import requests url = 'http://192.168.20.201:8083/ip' n = 0 while n < 30: response = requests.get(url) print(response.content.decode()) n = n + 1
結果以下,能夠看到請求發送到了不一樣節點上: