安装docker/docker-compose环境搭建redis、mysql、elk服务

4 篇文章 1 订阅
2 篇文章 0 订阅

前言:docker是一种容器技术,通过镜像image文件,创建运行的一个或多个运行在内存的容器container,docker-compose是一种容器编排技术,可以通过配置文件运行一套容器服务。
docker详细入门https://yeasy.gitbooks.io/docker_practice/introduction/

安装运行的目标机器是centos7.x,可以通过购买云服务器或者,如果要同时安装mysql redis,elk最好配置4g内存以上,避免在安装使用elk服务过程中出现内存不足报错。

安装Docker

连接虚拟机或者服务器之后,然后通过sudo -s命令切换到root账号。
如果之前安装过doceker需要先卸载

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装必要依赖:

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

添加docker稳定版仓库:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装19.03(目前日期20200307)版本:
因为最新k8s支持的docker版本是这个,为了方便后续的服务扩展,版本支持情况查看这个
https://github.com/kubernetes/kubernetes/releases

yum -y install docker-ce-19.03.0 docker-ce-cli-19.03.0 containerd.io

启动docker,并设置开机自启:

systemctl enable docker && systemctl start docker

修改/etc/docker/daemon.json文件:

vi /etc/docker/daemon.json

添加国内镜像加速地址:

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://registry.docker-cn.com"
  ]
}

重启docker:

systemctl daemon-reload
systemctl restart docker

验证下是否安装成功:
在这里插入图片描述

安装Docker compose

下载docker-compose

curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

对下载的文件添加可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

创建软连接:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试一下是否安装成功:
在这里插入图片描述

安装MySQL、Redis

直接在登录后当前用户目录下新建,比如我是( /home/vagrant)下创建mysql-redis.yml配置文件

vi mysql-redis.yml

文件内容如下所示:

version: '3'

services:
  mysql:
    image: mysql:5.7.24 # MySQL镜像
    container_name: mysql # MySQL容器名称
    environment:
      MYSQL_ROOT_PASSWORD: 123456 # MySQL ROOT账号密码
    ports:
      - 3306:3306 # 端口映射
    volumes:
      - /var/mysql/data:/var/lib/mysql #挂载 MySQL数据
  redis:
    image: redis:4.0.14 # Redis镜像
    container_name: redis # Redis容器名称
    command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes # 表示通过挂载配置文件追加配置
    volumes:
      - /var/redis/data:/data #挂载 Redis数据
      - /var/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf #挂载 Redis配置
    ports:
      - 6379:6379 # 端口映射

然后创建这些挂载目录:

mkdir -p /var/mysql/data /var/redis/data /var/redis/conf

创建redis挂载的配置文件redis.conf:

vi /var/redis/conf/redis.conf

添加如下内容(自定义连接密码):

requirepass 123456

然后运行如下命令创建MySQL和Redis容器:

docker-compose -f mysql-redis.yml up -d

启动好后,查看Docker容器状态:

docker ps -a | grep -E "mysql|redis"

在这里插入图片描述
然后通过虚拟机的ip 和MySQL 3306端口或者reids 的6379端口即可使用对应的服务。

安装ELK 服务

在当前登录的用户目录下新建elk.yml配置文件:

vi elk.yml

添加以下内容

version: '3'

services:
  elasticsearch:
    image: elasticsearch:7.3.0
    container_name: elasticsearch
    restart: always
    environment:
      - cluster.name=elasticsearch   #集群名称为elasticsearch
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #jvm内存分配为512MB
      - "discovery.type=single-node" #单节点启动
      - "TZ=Asia/Shanghai"
    volumes:
      - /var/elasticsearch/data:/usr/share/elasticsearch/data
      - /var/elasticsearch/logs:/usr/share/elasticsearch/logs
      - /var/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:7.3.0
    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:7.3.0
    container_name: logstash
    volumes:
      - /var/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch
    links:
      - elasticsearch:es
    ports:
      - 4560:4560

同样的,在启动这些容器之前,我们先创建相应的挂载目录和配置文件:

创建挂载目录

mkdir -p /var/elasticsearch/data /var/elasticsearch/logs /var/logstash

对Elasticsearch的挂载目录授予最高权限:

chmod 777 -R /var/elasticsearch

创建Elasticsearch配置文件elasticsearch.yml:

vi /var/elasticsearch/elasticsearch.yml

添加如下内容:
允许跨域访问

http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
transport.host: 0.0.0.0

接着创建Logstash配置文件logstash.conf:

vi /var/logstash/logstash.conf

添加如下内容:

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

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

sysctl -w vm.max_map_count=262144

准备完毕后,运行下面这条命令创建这些容器:

docker-compose -f elk.yml up -d

查看容器状态
可以看到容器都处于UP状态。
在这里插入图片描述
在Windows下使用浏览器访问:http://ip:9200
在这里插入图片描述
这说明Elasticsearch启动成功。

浏览器访问:http://ip:5601
在这里插入图片描述
说明Kibana启动成功。

接着回到虚拟机,使用如下命令进入到Logstash容器中:

docker exec -it logstash sh

安装json_lines插件,然后退出:

bin/logstash-plugin install logstash-codec-json_lines
  1. 因为国内网络可能出现报错
    Unable to download data from https://rubygems.org - SocketError: Failed to open TCP connection to api.rubygems.org:443 (initialize: name or service not known)
    多试几次吧,我是第一次报错,第二次正常了。
    如果命令实在安装不了,可能就要手动下载,上传到服务器,像挂在配置文件那样写法,把插件加载进去,然后手动安装
    通过在https://gems.ruby-china.com中搜索插件logstash-codec-json_lines,下载地址https://gems.ruby-china.com/downloads/logstash-codec-json_lines-3.0.6.gem
logstash-plugin install file:///usr/share/logstash/logstash-codec-json_lines-3.0.6.gem
  1. 报错就是可能出现内存不足
    failed; error=‘Cannot allocate memory’ (errno=12)
    需要在容器内改内存配置 vi config/jvm.options
    把内存参数改小
-Xms1g
-Xmx1g

改成

-Xms512m
-Xmx512m

到此服务搭建结束

相关配套服务

https://blog.csdn.net/cacacai/article/details/104724121
在这里插入图片描述

文章参考来源https://www.kancloud.cn/mrbird/spring-cloud/1263714

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值