Compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack
中的 Heat
十分类似。
它允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
-
服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 -
项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理
本篇博客是在搭建过Swarm集群基础上进行的,如未搭建过请移步:https://blog.csdn.net/M82_A1/article/details/94719485
一、Linux下的安装docker-compose二进制文件
1.下载二进制文件
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.修改文件权限
sudo chmod +x /usr/local/bin/docker-compose
3.查看版本信息
docker-compose --version
4.卸载
Linux下卸载直接删除对应二进制文件即可
sudo rm /usr/local/bin/docker-compose
二、启动集群
1.启动创建过的Swarm集群管理节点:
docker-machine start manager
2.连接到管理节点:
docker-machine ssh manager
3.在管理节点中创建compose文件(docker-compose.yml)
boot2docker.iso镜像中默认没有其它编辑工具,使用vi进行编辑保存:
vi docker-compose.yml
4.输入以下内容:
version: "3"
services:
wordpress:
image: wordpress
ports:
- 80:80
networks:
- overlay
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
deploy:
mode: replicated
replicas: 3
db:
image: mysql
networks:
- overlay
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
deploy:
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
volumes:
db-data:
networks:
overlay:
其中的 visualizer
服务提供一个可视化页面,可以从浏览器中很直观的查看集群中各个服务的运行节点。
三、部署服务
1.部署服务使用 docker stack deploy
, -c
参数指定 compose 文件名。
docker stack deploy -c docker-compose.yml wordpress
2.打开浏览器,输入任意节点的IP地址:8080,即可看到各节点运行状态。
3.自动负载均衡
我们可以再次执行一次compose文件,查看节点的状态情况。
docker stack deploy -c docker-compose.yml wordpress
在浏览器中输入任意节点的IP地址:8080,再次查看节点状态。
可以看到已经进行了负载均衡。
4.查看服务
docker stack ls
5.移除服务
docker stack down wordpress
如有错误,欢迎指出。