[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操作,有一定掉延迟。