GVKun编程网logo

docker-compose搭建ELK环境(docker compose)

29

以上就是给各位分享docker-compose搭建ELK环境,其中也会对dockercompose进行解释,同时本文还将给你拓展DockerCompose搭建ELK、DockerCompose搭建LA

以上就是给各位分享docker-compose搭建ELK环境,其中也会对docker compose进行解释,同时本文还将给你拓展Docker Compose搭建ELK、Docker Compose搭建LAMP环境、Docker Compose搭建mysql主从复制、docker compose搭建wordpress等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

docker-compose搭建ELK环境(docker compose)

docker-compose搭建ELK环境(docker compose)

  • ELK日志收集分析系统,下面我们ES不做集群,并且是在一台机子上使用docker-compose部署启动
  • 新建docker-compose.yml配置文件如下
    #author luoye
    version: "3" #版本号
    services: 
      elasticsearch-1: #服务名称(不是容器名)
        image: elasticsearch  #使用的镜像
        ports:
          - "9200:9200"  #暴露的端口信息和docker run -d -p 80:80 一样
        restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
        container_name: elasticsearch-1 #容器名称
      kibana: #服务名称(不是容器名)
        image: kibana  #使用的镜像
        ports:
          - "5601:5601"  #暴露的端口信息和docker run -d -p 80:80 一样
        restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
        container_name: kibana #容器名称
        #挂载文件
        volumes:  
          - /usr/games/kibana.yml:/etc/kibana/kibana.yml
        links:
          - elasticsearch-1:es01  #容器关联es01是别名
      logstash: #服务名称(不是容器名)
        image: logstash  #使用的镜像
        restart: "always" #重启策略,能够使服务保持始终运行,生产环境推荐使用
        container_name: logstash #容器名称
        #挂载文件1.自定义配置文件 2.logstash启动配置文件 3.文件读取的挂载路径
        volumes:  
          - /usr/games/logstash.conf:/etc/logstash/conf.d/logstash.conf    
          - /usr/games/logstash.yml:/etc/logstash/logstash.yml   
          - /usr/games/1.txt:/etc/logstash/1.txt 
        links:
          - elasticsearch-1:es01 #容器关联es01是别名
  • kibana.yml配置文件如下

    elasticsearch.url: "http://es01:9200"
    server.host: "0.0.0.0"
  • logstash.yml配置如下

    path.config: /etc/logstash/conf.d
  • logstash.conf配置如下

    input {
    	file {
    		path => "/etc/logstash/1.txt" #读取的配置路径,是容器的路径,需要挂载
    		type => "docker-logstash"
    		start_position => "beginning" #从文件开始处读写
    	}
    }
    
    output{
    	elasticsearch{
    		hosts=>["es01:9200"]  
    		index => "logstash-%{+YYYY.MM.dd}"
    	}
    	stdout{codec => rubydebug}
    }
  • 启动执行命令,需要在当前文件下执行:

    • docker-compose up -d

Docker Compose搭建ELK

Docker Compose搭建ELK

Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存:

sysctl -w vm.max_map_count=262144

创建Elasticsearch数据挂载路径:

mkdir -p /sunsas/elasticsearch/data

对该路径授予777权限:

chmod 777 /sunsas/elasticsearch/data

创建Elasticsearch插件挂载路径:

mkdir -p /sunsas/elasticsearch/plugins

创建Logstash配置文件存储路径:

mkdir -p /sunsas/logstash

在该路径下创建logstash-febs.conf配置文件(没有安装vim的话可以使用yum install vim命令安装):

vim /sunsas/logstash/logstash-sunsas.conf

内容如下(注意先进入INSERT模式,不要输错):

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "es:9200"
    index => "febs-logstash-%{+YYYY.MM.dd}"
  }
}

创建ELK Docker Compose文件存储路径:

mkdir -p /sunsas/elk

在该目录下创建docker-compose.yml文件:

vim /sunsas/elk/docker-compose.yml

内容如下:

version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.4.1
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #集群名称为elasticsearch
      - "discovery.type=single-node" #单节点启动
      - "ES_JAVA_OPTS=-xms512m -Xmx512m" #jvm内存分配为512MB
    volumes:
      - /febs/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /febs/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
  kibana:
    image: kibana:6.4.1
    container_name: kibana
    links:
      - elasticsearch:es #配置elasticsearch域名为es
    depends_on:
      - elasticsearch
    environment:
      - "elasticsearch.hosts=http://es:9200" #因为上面配置了域名,所以这里可以简写为http://es:9200
    ports:
      - 5601:5601
  logstash:
    image: logstash:6.4.1
    container_name: logstash
    volumes:
      - /febs/logstash/logstash-febs.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch
    links:
      - elasticsearch:es
    ports:
      - 4560:4560

切换到/sunsas/elk目录下,使用如下命令启动:

docker-compose up -d

第一次启动需要下载,启动完成后,查看docker容器:

docker ps -a

 

Docker Compose搭建LAMP环境

Docker Compose搭建LAMP环境

最近买了《代码审计 企业级WEB代码安全架构》这本书,想要测试一下里面的一些漏洞,但是又不想弄脏我的工作环境,于是便学习了一下怎样用Docker来搭建LAMP环境。

先建个文件夹,用来存我们接下来的文件。

mkdir lamp
cd lamp/

然后写php-apache的dockerfile。 自己写,不直接用image的原因是直接用image没装mysqli插件,连不上数据库。

touch Dockerfile
vi Dockerfile
FROM php:apache
RUN docker-php-ext-install mysqli
EXPOSE 80

接着就可以开始写docker-compse了(有的装docker会自带,没有的话手动装下就好)。

touch docker-compose.yml
vi docker-copmose.yml
version: ''3''
services:
    web:
        build: 
            context: ./
            dockerfile: Dockerfile
        volumes: 
            - ./php:/var/www/html
        ports: 
            - 80:80
        depends_on:
            - db
    db:
        image: mysql
        command: --default-authentication-plugin=mysql_native_password
        restart: alawys
        environment: 
            MYSQL_ROOT_PASSWORD: root
        ports: 
            - 3306:3306

检查一下有没有问题。

docker-compose config

然后就可以运行了。

docker-compose up

也可以加上-d参数让它在后台运行。

docker-compose up -d

接着就可以到php目录下写我们的php代码了。 (php目录的owner是root,所以得先切换下owner,否则没有权限进行写操作。)

chown username:usergroup php/

测试下能不能正常连接到数据库。

touch index.php
vi index.php
<?php
$host = ''db'';
$user = ''root'';
$pass = ''root'';
$conn = new mysqli($db,$user,$pass);
if($conn->connection_error)
{
    echo $conn->connection_error;
}
else
{  
    echo "Connected to Database Successfully.";
}
?>

访问localhost,成功。

最后记一下我遇到的一个问题,就是连接docker的守护进程需要权限,所以每次都要加上sudo才能执行命令。 解决办法就是把用户加进docker组.

sudo useradd -aG docker $USER
newgrp docker

Docker Compose搭建mysql主从复制

Docker Compose搭建mysql主从复制

配置文件以及文档地址: http://git.oschina.net/wangjingj/mycat-rw

系统环境

  • docker 1.12.3

  • mysql5.7.17

  • deepin 15.3桌面版(这个没啥影响,因为我们用docker)

要点说明

  • 使用`docker bridge`网络,设置静态IP

  • 使用`volumes`挂载,不使用数据卷容器(因为我使用`docker compose`没搞成功 - -!)

  • 镜像使用`build`创建(保留扩展性),不使用`image`

  • 目前为止,没有暴露端口号,只是两个`slave`link了`master`.马上着手研究使用[mycat](http://www.mycat.org.cn/)完成mysql的主从复制+读写分离,敬请期待.

  • 挂载`hosts`文件,以便于使用`hostname`代替ip地址

环境准备

  • `docker-engine`安装

这个直接参考官方文档吧.[debian下安装docker-engine](https://docs.docker.com/engine/installation/linux/debian/)

  • `docker-compose`安装

[debian下安装docker-compose](https://docs.docker.com/compose/install/)

  • 拉取`mysql:5.7.17`镜像

Docker Compose搭建mysql主从复制

需要挂载的配置文件

  • 目录结构

Docker Compose搭建mysql主从复制

简要说明:

  • mysql-master: 存放master配置文件

  • mysql-s1: 存放第一个slave配置文件

  • mysql-s2: 存放第二个slave配置文件

  • hosts: 本地路由

  • mysql-master的配置

没多少东西,只有一个`mysqld.cnf`需要在末尾追加:

Docker Compose搭建mysql主从复制

mysql-s1/mysql-s2的配置

跟master一样,也只有一个`mysqld.cnf`需要在末尾追加:

Docker Compose搭建mysql主从复制

hosts文件配置

Docker Compose搭建mysql主从复制

docker-compose配置文件和Dockerfile

  • 目录结构

Docker Compose搭建mysql主从复制

  • Dockerfile

其实`master s1 s2`的Dockerfile都是一致的,咱就是为了保持一定的扩展性才这么写的.

我们完全可以用`docker-compose`的`image`代替.

在docker-compose.yml中image和build不能一起使用的

好吧,看一下这个`Dockerfile`

Docker Compose搭建mysql主从复制

  • docker-compose.yml

好吧,重点来了.

Docker Compose搭建mysql主从复制

Docker Compose搭建mysql主从复制

Docker Compose搭建mysql主从复制

run

在`docker-compose.yml`文件的目录下运行

Docker Compose搭建mysql主从复制

别激动,我们现在才只是完成了一半….

下面开始设置mysql主从复制.

配置master

  • 进入master的mysql命令行

Docker Compose搭建mysql主从复制

输入`MYSQL_ROOT_PASSWORD:`的值m1test,进入mysql命令行模式.

  • 创建用于主从复制的用户`repl`

Docker Compose搭建mysql主从复制

  • 给`repl`用户授予slave的权限

Docker Compose搭建mysql主从复制

  • 锁库,不让数据再进行写入动作,这个命令在结束终端会话的时候会自动解锁

Docker Compose搭建mysql主从复制

  • 查看master状态

Docker Compose搭建mysql主从复制

记下`master-bin.000003`和`636`一会在slave用.

配置slave1

  • 进入s1的mysql命令行

Docker Compose搭建mysql主从复制

输入`MYSQL_ROOT_PASSWORD:`的值s1test,进入mysql命令行模式.

  • 连接master

Docker Compose搭建mysql主从复制

  • 启动slave

Docker Compose搭建mysql主从复制

配置slave2

几乎跟slave一致….咱就不写了…

实验1 测试master写入后是否能够同步到slave

好了,到此位置,配置已经完成,那是否成功了捏… 我们来试一下.

  • 在master的mysql命令行下创建数据库 ms-test

Docker Compose搭建mysql主从复制

  • 去两台slave上查看是否也有了mstest数据库.

Docker Compose搭建mysql主从复制

则证明成功.

实验2 创建一个表,插入一条数据

自己来吧 哈哈哈哈

总结

通过以上步骤,咱们搭建了一个以`docker-compose`管理的mysql `master-slave`模式的主从复制.

下一步,我们需要进行暴露端口,或者使用`links`属性来让应用或者其他客户端工具能够访问我们的mysql.

再下一步,我们需要使用`mycat`中间件来完成我们的读写分离.

支持请点赞,不喜勿喷.

每天一点点,成长多一点.

docker compose搭建wordpress

docker compose搭建wordpress


version: '3.1'

services:

  db:
    image: MysqL:5.7
    restart: always
    environment: 
      MysqL_DATABASE: blog
      MysqL_USER: stivenyang
      MysqL_PASSWORD: *******
      MysqL_RANDOM_ROOT_PASSWORD: '*******'
    volumes:
      - ../MysqL/blog/conf/my.cnf:/etc/MysqL/my.cnf
      - ../MysqL/blog/data:/var/lib/MysqL
    ports:
      - 3306:3306

  wordpress:
    image: wordpress
    restart: always
    environment:
      wordpress_DB_HOST: db
      wordpress_DB_USER: stivenyang
      wordpress_DB_PASSWORD: ********
      wordpress_DB_NAME: blog
    volumes:
      - ../wordpress:/var/www/html
  
  web:
    image: Nginx
    restart: always
    ports: 
      - 80:80
    volumes:
      - ../Nginx/Nginx.conf:/etc/Nginx/Nginx.conf
      - ../Nginx/conf.d:/etc/Nginx/conf.d

今天关于docker-compose搭建ELK环境docker compose的介绍到此结束,谢谢您的阅读,有关Docker Compose搭建ELK、Docker Compose搭建LAMP环境、Docker Compose搭建mysql主从复制、docker compose搭建wordpress等更多相关知识的信息可以在本站进行查询。

本文标签: