docker学习笔记之Docker Compose与docker swarm
来源:互联网 发布:java课程表管理系统 编辑:程序博客网 时间:2024/05/19 04:54
Docker Compose
Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。Docker Compose 运行的目录下的所有文件(docker-compose.yml, extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
Docker Compose 是一个用来创建和运行多容器应用的工具。
安装 Docker Compose:
方式 1:(官方推荐,但是太慢)
# curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname-s`-`uname -m` > /usr/local/bin/docker-compose# chmod +x /usr/local/bin/docker-compose
方式 2:(推荐)
# tar -xzvf pip-x.tar.gz # cd pip-x # python setup.py install # pip install docker-compose
查看docker-compose信息:
[root@foundation5 compose]# docker-compose versiondocker-compose version 1.16.1, build 6d1ac219docker-py version: 2.5.1CPython version: 2.7.5OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
使用docker-compose搭建一个负载均衡应用
3个web 容器(real servers,nginx),以及 1 个 haproxy 容器(负载均衡)。
项目结构
[root@foundation5 compose]# tree
. ├── docker-compose.yml ├── haproxy │ └── haproxy.cfg ├── httpd │ ├── Dockerfile │ ├── docker.repo │ └── index.html ├── nginx1 │ └── index.html └── nginx2 └── index.html
[root@foundation5 compose]# cat docker-compose.yml
web1: build: ./httpd expose: - 80web2: image: nginx:latest volumes: - ./nginx1:/usr/share/nginx/html expose: - 80web3: image: nginx volumes: - ./nginx2:/usr/share/nginx/html expose: - 80 haproxy: image: haproxy volumes: - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro links: - web1 - web2 - web3 ports: - "8080:80" expose: - 80
[root@foundation5 compose]# cat httpd/Dockerfile
FROM rhel7:v1EXPOSE 80COPY docker.repo /etc/yum.repos.d/RUN yum install -y httpdADD index.html /var/www/htmlCMD ["/usr/sbin/httpd","-D","FOREGROUND"]
[root@foundation5 compose]# cat haproxy/haproxy.cfg
global log 127.0.0.1 local0 log 127.0.0.1 local1 noticedefaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms stats uri /statusfrontend balancer bind 0.0.0.0:80 mode http default_backend web_backendsbackend web_backends mode http option forwardfor balance roundrobin server weba web1:80 check server webb web2:80 check server webc web3:80 check option httpchk GET / http-check expect status 200
在该目录下执行 docker-compose up 命令,一个负载均衡集群就起来了
当我们干掉其中一个后端server的时候服务正常,管理端有提示:
访问/status 可以查看到 haproxy 的统计信息
ctrl+c终止进程
当挂掉的节点服务起来后会自动加入负载均衡集群,管理端也会有提示。
docker swarm
只需要在一个节点上运行docker swarm init,然后在其他节点上运行加入命令即可
主机3作为manager,1、2作为join节点:
[root@vm72-3 ~]# docker swarm init[root@vm72-2 ~]# docker swarm join \> --token SWMTKN-1-51igcdpg4cbgaokq535qis01osel396of153sdlp8k0ljn0rou-2m9sltwkc4uq1vfmp79ous0e4 \> 172.25.5.33:2377This node joined a swarm as a worker.
创建具有6个副本的集群(以nginx应用为例)
[root@vm72-3 ~]# docker service create --name web --replicas 6 --publish 8080:80 nginx
可以改变每一个容器的默认发布页,然后就行负载均衡测试;
可以关掉一些容器,然后会观察到集群会自动开启一些容器来补足副本个数,一般副本都是均匀分布在各个节点上的
[root@vm72-3 ~]# for i in {1..10};do curl 172.25.5.31:8080 -w "\n";done
swarm监控容器visualizer
使用:
docker load -i visualizer.tar#倒入镜像docker service create --name vz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer:latest#开启监控[root@vm72-3 ~]# docker service create --name web --replicas 6 --publish 8090:80 nginx#开启集群
访问测试:
- docker学习笔记之Docker Compose与docker swarm
- Docker学习之Compose
- 【实战】Docker Machine + Compose + Swarm
- docker-compose学习笔记1
- docker-compose 学习笔记2
- Docker Swarm学习笔记(二)
- Docker Swarm学习笔记(二)
- Docker学习笔记八:Swarm
- Docker学习笔记八:Swarm
- docker/compose项目笔记
- gitlab docker-compose笔记
- docker swarm笔记
- docker swarm 入门笔记
- Docker Swarm学习教程
- Docker Swarm学习教程
- Docker Swarm学习教程
- docker swarm mode 学习
- docker之compose
- android推送选型和混合设计
- 关于java.lang.NoClassDefFoundError处理(我遇到的坑could not initialize class xmlreaders)
- 简单有序表【C语言程序设计】
- lnmp 之nginx安装
- Companionship of Books
- docker学习笔记之Docker Compose与docker swarm
- mkisofs------制作iso文件
- Tactical Multiple Defense System UVALive
- 55-经典问题分析四
- MAC JAVA 1.8 与 9 版本切换
- 《Unity Shader入门精要》 第二章 学习笔记
- ElasticSearch入门 第二篇:集群配置
- JS继承
- python 中del 的用法