docker-compose 安装
sudo yum update
sudo yum install docker-compose-plugin
# 习惯老版本的也可以安装 docker-compose
sudo yum install docker-compose
建议阅读官方文档,新版都不是 docker-compose 了,变成 docker compose 命令了
快速上手
使用 docker-compose 就是为了在配置文件中去部署应用,其中网络可能会比较容易难理解。
直接找一个应用然后部署就明白了。 比如这个常用部署里面的任意一个应用
一开始里面的网络让我晕了。我们需要明确的有以下几点:
- 容器之间通信不能使用 localhost ,因为 localhost 指向的是容器自己
- 通过 docker-compose 启动容器的话,会默认创建一个网络
默认值为:docker-compose.yml
当前所在文件夹 + 配置中指定的网络名称,如目录_网络
- 不同网络之间的容器不能直接通信(通过什么方式访问?笔者暂时不知道)
- 相同网络直接访问是通过
容器名:端口
那么现在有如下的一个配置:
|- es
|- docker-compose.yml
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.6.10
container_name: elasticsearch # 容器名
environment:
- cluster.name=docker-cluster
volumes:
- esdata:/usr/share/elasticsearch/data
- ./custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300
networks:
- localnet # 参与的网络
kibana:
image: docker.elastic.co/kibana/kibana:5.6.10
container_name: kibana # 容器名
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
networks:
- localnet
volumes:
esdata:
driver: local
networks: # 创建一个网络
localnet:
在 es 目录下通过 docker-compose up
启动服务后,那么得出以下信息:
- 创建一个
es_localnet
的网络
如果配置文件中没有配置 networks,则会创建一个es_default
的默认网络 - kibana 配置文件中要指向这里的 elasticsearch 的话,需要写
http://elasticsearch:9200
网络
# 查看网络
docker network ls
# 移除网络
docker remove 网络名
docker-compose 命令
# 前台启动一键更新服务; 需要在 docker-compose.yml 文件同级目录
# 后面跟参数 -d, 则是后台
docker-compose up
# 指定 up 其中的一个服务, 比如 up rabbitmq
# 使用场景:比如要暴露一个端口,可以 remove 之后,再使用 up xxx服务 进行端口的暴露
# 至于如何保留数据,这个还需要再研究下,如果移除后,数据还在
docker-compose up rabbitmq
# 销毁容器,后面加参与 -v 会把网络和卷也销毁
docker-compose down
# 查看日志
# 后面增加服务名则查看指定的服务日志
# -f 参数:持续的输出日志
# -t 参数:显示时间戳
docker-compose logs
不同配置的容器通信
前面说过,一个 docker-compose.yml
如果不配置会创建默认的,反正是以目录来创建,也就是说不同配置的服务,加入的默认或则自定义的网络其实不在同一个,那么如何加入同一个已经存在的网络呢?
networks:
default:
external:
name: elastic_default
上述通过配置,默认加入的网络为 external
外部的,该网络在使用 docker-compose down -v
时,不会被删除,会直接跳过;
所以,在开发环境中,为了简单,还是使用同一份 docker-compose.xml
配置来部署测试环境的中间件,比较省事
文档/官方地址
- compose-file :docker-compose-file.yaml 编写规范