前面已经学习了如何部署Service吗,也验证了swarm的failover特性,下面我们要学习的是如何访问Service。
 
下面我们删除之前的Service,重新部署一个Service
 
内部访问Service
 
root@host03:~# docker service  rm web_server    #    删除之前的Service web_server
web_server
root@host03:~# docker service create --name web_server --replicas=2 httpd    #    创建新的Service,并设置副本数为2
1hgm1w94dvuxlbsen9lmsefvz
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged
root@host03:~# docker service ps web_server    #    查看新建Service 容器分布情况
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
s4o9mtd8xvqe        web_server.1        httpd:latest        host01              Running             Running 12 seconds ago                       
kq66bz6omujf        web_server.2        httpd:latest        host02              Running             Running 12 seconds ago
root@host01:~# docker inspect web_server.1.s4o9mtd8xvqe8yqcnbyuom26f | jq .[0].NetworkSettings    #    查看某容器内部IP地址
{
  "Bridge": "",
  "SandboxID": "407fde9cdf85507b7e5c635ea3313e41e6ef54da9242837e292526cf0398000d",
  "HairpinMode": false,
  "LinkLocalIPv6Address": "",
  "LinkLocalIPv6PrefixLen": 0,
  "Ports": {
    "80/tcp": null
  },
  "SandboxKey": "/var/run/docker/netns/407fde9cdf85",
  "SecondaryIPAddresses": null,
  "SecondaryIPv6Addresses": null,
  "EndpointID": "a10f1d6f81f492f8b7911997a0837d499f8bbc733c274c955e479c0fedeec433",
  "Gateway": "172.17.0.1",
  "GlobalIPv6Address": "",
  "GlobalIPv6PrefixLen": 0,
  "IPAddress": "172.17.0.2",
  "IPPrefixLen": 16,
  "IPv6Gateway": "",
  "MacAddress": "02:42:ac:11:00:02",
  "Networks": {
    "bridge": {
      "IPAMConfig": null,
      "Links": null,
      "Aliases": null,
      "NetworkID": "d4b0862f06c8f2f16802b3fe9175743e7afdc2396322ff19e656bebca4d9a940",
      "EndpointID": "a10f1d6f81f492f8b7911997a0837d499f8bbc733c274c955e479c0fedeec433",
      "Gateway": "172.17.0.1",
      "IPAddress": "172.17.0.2",
      "IPPrefixLen": 16,
      "IPv6Gateway": "",
      "GlobalIPv6Address": "",
      "GlobalIPv6PrefixLen": 0,
      "MacAddress": "02:42:ac:11:00:02",
      "DriverOpts": null
    }
  }
}
root@host01:~# curl http://172.17.0.2    #    内部访问验证
<html><body><h1>It works!</h1></body></html>
 
外部访问Service
 
root@host03:~# docker service update --publish-add 8080:80 web_server    #    更新Service配置,添加端口映射,将容器的80端口映射到host的8080端口
web_server
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged
root@host03:~# curl http://10.12.31.211:8080    #    访问 host01 IP 验证外部访问
<html><body><h1>It works!</h1></body></html>
root@host03:~# curl http://10.12.31.212:8080    #    访问 host02 IP 验证外部访问
<html><body><h1>It works!</h1></body></html>
root@host03:~# curl http://10.12.31.213:8080    #    访问 host03 IP 验证外部访问(host03上没有容器,也可以访问成功,这是swarm的一个特性 routing mesh)
<html><body><h1>It works!</h1></body></html>
 
 

099、如何访问Service (Swarm06)的更多相关文章

  1. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

  2. DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)

    在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ...

  3. 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)

    除了 Cluster 内部可以访问 Service,很多情况我们也希望应用的 Service 能够暴露给 Cluster 外部.Kubernetes 提供了多种类型的 Service,默认是 Clus ...

  4. centos7下kubernetes(15。kubernetes-外网访问service)

    kubernetes提供了多种类型的service,默认是cluster IP ClusterIP cluster内部IP对外提供服务,只有cluster内的节点和pod可访问,这是默认的servic ...

  5. centos7下kubernetes(14。kubernetes-DNS访问service)

    我们在部署kubernetes时,会自动部署dns组件,其作用是通过dns解析的方法访问service coredns是一个DNS服务器,每当有新的service被创建,kube-dns会添加该ser ...

  6. centos7下安装docker(23.docker-swarm之如何访问service)

    如何访问service呢? 为了便于分析,我们重新部署web-server 1.删除service 执行命令docker service rm web-server docker service rm ...

  7. Android使用binder访问service的方式(一)

    binder机制是贯穿整个android系统的进程间访问机制,经常被用来访问service,我们结合代码看一下binder在访问service的情形下是怎么具体使用的. service 你可以理解成没 ...

  8. Android 使用binder访问service的方式

    binder机制是贯穿整个Android系统的进程间访问机制,经常被用来访问service,我们结合代码看一下binder在访问service的情形下是怎么具体使用的. service 你可以理解成没 ...

  9. DNS 访问 Service【转】

    在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ...

随机推荐

  1. LeetCode 75. 颜色分类(Sort Colors)

    题目描述 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色 ...

  2. Python 图形界面元素

    from tkinter import * import os def button_click1(): try: filePath = r'D:\CloudMusic' os.system(&quo ...

  3. Spring Boot学习笔记(1)

    @SpringBootApplication用于注解Spring启动类,如下所示 @SpringBootApplication public class Application { public st ...

  4. 四、SpringBoot出现报错:java.lang.NoSuchMethodError: org.springframework.http.MediaType.equalsTypeAndSubtype(Lorg/springframework/util/MimeType;)Z

    idea启动SpringBoot项目后,出现如下错误: 2019-11-19 15:24:44.344 ERROR 39168 --- [nio-8443-exec-1] o.a.c.c.C.[.[. ...

  5. nuros安全报告

    We believe that great technology should benefit everyone. Self-driving vehicles promise to save live ...

  6. LC 851. Loud and Rich

    In a group of N people (labelled 0, 1, 2, ..., N-1), each person has different amounts of money, and ...

  7. Java 谷歌浏览器开发必备插件

    1.谷歌访问助手 下载网址:http://www.ggfwzs.com/ 2.Json Viewer 格式化请求接口,返回Json数据格式,可以在浏览器展示 3.Restlet client 一种类似 ...

  8. spring整合mybatis(代理的方式)【我】

    创建项目等同上一篇非代理方式随笔,只说不一样的部分: 项目结构主要是多了下面红框部分: 配置文件: 主要是dao配置文件中多了Mapper代理java类的扫描包路径: applicationConte ...

  9. Selenium 2自动化测试实战22(处理HTML5的视频播放)

    一.处理HTML5的视频播放 大多数浏览器使用控件(如Flash)来播放视频,但是,不同的浏览器需要使用不同的插件.HTML5定义了一个新的元素<video>,指定了一个标准的方式来嵌入电 ...

  10. linux之文件查找find grep详解,以及压缩归档

    .find linux里的实时查找工具,通过制定路径完成文件查找. find[options]...[查找路径] [查找条件] [处理动作] 查找路径:查找的位置,默认是当前文件夹. 查找条件:指定查 ...