[TimLinux] docker CentOS7入门——服务(2)

1. 服务含义

分布式应用中,应用的不同部分即称为“服务”,视频网站是一个分布式应用,包含有:数据的存储,视频的转码,前端展示等部分,对应的这些部分即称为相应的服务。docker平台中,定义、运行和扩展服务只需要编写'docker-compose.yml'文件即可完成。

2. docker-compose.yml

version: "3"
services:
  web:
    image: timscm/get-started:part1
    deploy:
      replicas: 5
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

解释:通过docker-compose.yml,可以启动一个新的分布式应用,启动的应用中将使用5个容器实例,可认为提供了5个服务,5个容器对外提供统一的访问地址,实现web应用的负载均衡。

3. 运行

[root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
this node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again
[root@VM_0_7_centos t]# docker swarm init
Swarm initialized: current node (tmc0otz2vl76mhgrk9isrojwq) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-00f7xsxxxxn1lnzl4fh5r71ggxxvvpnxxjbhhpfi xx.xx.xx.xx:port-xx

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

[root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
[root@VM_0_7_centos t]# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
829561c83a3f        timscm/get-started:part1   "python app.py"     21 seconds ago      Up 17 seconds       80/tcp              getstartedlab_web.2.t3ovke2vxbwsegcsb3vl6yhka
24f3e2202918        timscm/get-started:part1   "python app.py"     22 seconds ago      Up 17 seconds       80/tcp              getstartedlab_web.4.wtwv8sv5vy5h0y4l323mxnib9
68bd5b5e43c4        timscm/get-started:part1   "python app.py"     22 seconds ago      Up 17 seconds       80/tcp              getstartedlab_web.3.r9a7thbxyyfdcarjcv3ikckw3
97d5f75e4747        timscm/get-started:part1   "python app.py"     22 seconds ago      Up 17 seconds       80/tcp              getstartedlab_web.5.p2xmxat872mpm5kbs7l56kbjh
c083970ea25b        timscm/get-started:part1   "python app.py"     22 seconds ago      Up 18 seconds       80/tcp              getstartedlab_web.1.fm1fyut03xg02gl17lqc1xyln
[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 24f3e2202918<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 68bd5b5e43c4<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 829561c83a3f<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 97d5f75e4747<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> c083970ea25b<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 24f3e2202918<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 68bd5b5e43c4<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]# curl http://localhost/
<h3>Hello World!</h3><b>Hostname:</b> 829561c83a3f<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>[root@VM_0_7_centos t]#

4. 其他关联

[root@VM_0_7_centos t]# docker stack ls
NAME                SERVICES            ORCHESTRATOR
[root@VM_0_7_centos t]# docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
[root@VM_0_7_centos t]# docker stack ls
NAME                SERVICES            ORCHESTRATOR
getstartedlab       1                   Swarm
[root@VM_0_7_centos t]# docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
75c49c1c7bbd        timscm/get-started:part1   "python app.py"     6 seconds ago       Up 1 second         80/tcp              getstartedlab_web.3.wejacfpetviacfqb5f5w0njma
ddd2880e62b2        timscm/get-started:part1   "python app.py"     7 seconds ago       Up 2 seconds        80/tcp              getstartedlab_web.2.wd0fou2dqwjsl1x170awqgq23
6fd24ce51a46        timscm/get-started:part1   "python app.py"     7 seconds ago       Up 1 second         80/tcp              getstartedlab_web.1.behnw0975n2gcdsa9e3ij4fzy
f6022e0dcad1        timscm/get-started:part1   "python app.py"     7 seconds ago       Up 1 second         80/tcp              getstartedlab_web.5.mtoh61tvkpoz4iaksuo275r94
2714fb2f59ef        timscm/get-started:part1   "python app.py"     7 seconds ago       Up 2 seconds        80/tcp              getstartedlab_web.4.dlgywjyo6xsitgjtec5hxef73
[root@VM_0_7_centos t]# docker stack rm getstartedlab
Removing service getstartedlab_web
Removing network getstartedlab_webnet
这个操作,会自动 stop 掉容器,不需要单独调用 docker stop操作,有一定掉延迟。

 

posted @ 2019-02-20 15:14  TimLinux  阅读(207)  评论(0编辑  收藏  举报