使用的是docker-compose方法安装elk组件,对这部分的内容进行一个知识上的补充,在这里把之前的Docker文章拿出来做个学习的索引,以方便刚刚接触的同学,那让我们开始吧。
启动服务
docker-compose up //启动
守护进程方式,启动服务
docker-compose up -d //守护进程方式
docker-compose logs -f //持续动态查看
查看docker-compose启动的进程列表(需要在.yaml文件夹下执行)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RngdswPp-1653107532613)(https://note.youdao.com/yws/res/18608/WEBRESOURCE154daad4a5a9a66ef4c69f225b265055)]
清理后台已经终止运行的容器
docker-compose rm
在使用docker-compose构建之前要指定Docker-file文件,执行docker-compose build
命令进行构建。
执行docker-compose pull
对镜像执行拉取操作。
docker-compose重新加载镜像,执行docker-compose up -d --build
命令进行构建。
1.当你未指定网络时,docker-compose就会给你创建一个默认的网络,可以执行docker network ls
里查看。
version: '2.2'
services:
box1:
image: imageName:version
command: /bin/sh -c "while true;do sleep 3600;done"
box2:
image: imageName:version
command: /bin/sh -c "while true;do sleep 3600;done"
ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
# 产生上面的错误是因为文件里有使用tab键的地方,把它替换成空格就可以解决问题了
查看网络是否可以正常通信,ping 容器名字
,查看网络的信息,执行 docker network inspect DRIVER名字
。
如果想对实例进行水平扩展,执行下面的命令:
docker-compose up -d --scale servericeName=3
当然我们也可以减少实例数量:
docker-compose up -d --scale servericeName=1
服务依赖主要是使用关键字depends_on
实现,官方demo如下:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
推荐一个GitHub上docker-compose的练习:https://github.com/dockersamples/example-voting-app
docker-compose 官方查询文档: https://docs.docker.com/compose/compose-file/
version: '2.2'
services:
cerebro:
image: lmenezes/cerebro:0.8.3
container_name: cerebro
ports:
- "9000:9000"
command:
- -Dhosts.0.host=http://elasticsearch:9200
networks:
- es7net
kibana:
image: docker.elastic.co/kibana/kibana:7.1.0
container_name: kibana7
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
- "5601:5601"
networks:
- es7net
logstash:
image: logstash:7.1.0
container_name: logstash7
restart: always
volumes:
- /Users/stark/server/docker-es-7.1/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
ports:
- 4560:4560
networks:
- es7net
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name: es7_01
environment:
- cluster.name=geektime
- node.name=es7_01
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01,es7_02
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- es7net
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name: es7_02
environment:
- cluster.name=geektime
- node.name=es7_02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01,es7_02
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data2:/usr/share/elasticsearch/data
networks:
- es7net
volumes:
es7data1:
driver: local
es7data2:
driver: local
networks:
es7net:
driver: bridge