- Docker
Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker
Compose不再需要使用shell脚本来启动容器。
- Compose
通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。 - Docker Compose 项目是Docker官方的开源项目,使用python语言编写,负责实现对Docker容器集群的快速编排.
Docker Compose 使用的三个步骤为 - 使用 Dockerfile 文件定义应用的环境
- 使用docker-compose.yml 文件定义构成应用程序的服务,这样它们可以在隔离环境中一起运行;
- 最后执行 docker-compose up 命令来创建并启动所有服务
Compose 安装
(1)下载
官方文档:https://docs.docker.com/compose/install/
- 您可以在macOS,windows和Linux上运行Compose.本文演示基于Linux环境的安装.我们可以使用curl命令从Github下载它的二进制文件.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
因为Docker-Compose存放在Github,可能不太稳定,我们可以通过执行下面命令,高速安装Compose,该加速通道由DaoCloud提供: http://get.daocloud.io/#install-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
你可以通过修改URL中的版本,可以自定义您所需的版本文件
(2)授权
chmod +x /usr/local/bin/docker-compose
(3)测试结果
docker-compose --version
docker-compose version 1.13.0, build 1719ceb
(4)案例
vim docker-compose.yml
描述 compose 文件的版本信息
version: "3.2"
services:
nginx: #服务名称
image: nginx #创建容器时所需的镜像
container_name: my1nginx #容器名称,默认为"工程名称-服务条目名称-序号"
ports: #宿主机与容器的端口映射关系
- "8081:80" # 左边宿主机端口:右边容器端口
networks: #配置连接的网络.引用顶级 networks 下的条目
- nginx-net
networks:
nginx-net: #一个具体网络的条目名称
name: nginx-net # 网络名称
driver: bridge # 网络模式
执行结果
(5)docker-compose部署redis集群
这里接上之前docker部署redis集群
https://blog.csdn.net/weixin_51788903/article/details/120992908
扫描二维码关注公众号,回复: 13399825 查看本文章
for port in `seq 6371 6373`; do mkdir -p ${port}/conf && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf && mkdir -p ${port}/data; done
(6)编写docker-compose.yml文件
在当前目录下面/usr/local/docker-redis/redis-cluster
vim docker-compose.yml
version: "3.2"
services:
redis-6374:
image: redis
container_name: redis-6374
restart: always
network_mode: "host"
volumes:
- /usr/local/docker-redis/redis-cluster/6374/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /usr/local/docker-redis/redis-cluster/6374/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6375:
image: redis
container_name: redis-6375
restart: always
network_mode: "host"
volumes:
- /usr/local/docker-redis/redis-cluster/6375/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /usr/local/docker-redis/redis-cluster/6375/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6376:
image: redis
container_name: redis-6376
restart: always
network_mode: "host"
volumes:
- /usr/local/docker-redis/redis-cluster/6376/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /usr/local/docker-redis/redis-cluster/6376/data:/data
后面接上第五点
https://blog.csdn.net/weixin_51788903/article/details/120992908
(7)移除redis集群
作用:直接移除
docker-compose down
[+] Running 3/3
⠿ Container redis-6376 Removed 2.0s
⠿ Container redis-6374 Removed 2.0s
⠿ Container redis-6375 Removed
综上是对docker-compose集群redis的操作