如何访问service呢?
为了便于分析,我们重新部署web-server
1.删除service
执行命令docker service rm web-server
docker service rm删除web-server,service所有的副本会被同时删除
2.重新创建service,这次直接使用--replicas=2指定副本的数量
3.现在每个worker-node上分别运行了一个副本
那么现在如何访问service呢?
可以想成现在有两个docker host,分别运行了一个httpd容器,我们先去docker1上看一下网络情况
容器监听了80端口,但是没有映射到Docker host,所以只能通过容器的IP访问,查看容器的IP
容器的IP是172.17.0.2,实际上连接的是dcoker 默认的bridge网络
我们可以直接在docker1上访问容器的http服务
但这样的访问也仅仅是容器层面的访问,服务没有暴露给外部网络,只能在dcoker 主机上访问,也就是说,我们现在无法访问service web-server
如何做到从外部访问service呢?
之前我们学习dcoker网络时知道只要将service暴露到外部,service也是同样的方法,不同的是我们之前学习的是单台host上的单个容器,现在是多个host上的多个容器,
其实方法也很简单,我们只要个整个的web-server添加端口映射就可以了
执行一下命令
docker service update --publish-add 8080:80 web-server
如果是新建service,可以直接使用--publish参数,比如:
docker service create --name web-server --publish 8080:80 --replicas=2 httpd
可以看到现在service已经有端口了。
在浏览器中测试一下