写一个简单的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
结果以下,能够看到请求发送到了不一样节点上: