1.安装Docker

Docker可简单理解为一个轻量级的虚拟机。Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docker和传统虚拟化方式的不同。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而Docker内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便:资源利用率高、启动迅速、迁移方便等。

1) 安装

官网有各种平台的安装指南,可参考:

https://docs.docker.com/engine/installation/

不同平台Docker安装大同小异,这里以MacOS系统为例:

a. 直接下载安装即可(命令注意输入法的中英文)

https://docs.docker.com/docker-for-mac/

b. 命令安装

$ brew install docker

2) 安装成功检测

输入如下命令:

$ docker --version

$ docker-compose --version

$ docker-machine –version

3) 镜像加速

鉴于国内的环境,可以采用VPN或阿里云等进行镜像加速,加快镜像软件的下载。

2. JavaWeb镜像软件制作

1) 安装CentOS

拉取最新稳定版本

$ docker pull centos

拉取特定版本

$ docker pull centos:centos6

注:若出现权限问题,命令行前面加sudo

查看当前所有镜像,确保安装成功

$ docker images

2) 创建CentOS容器

$ docker run –i -t centos /bin/bash

完整创建CentOS容器命令

& docker run -i -t --name centos1 -v /Users/devin/Documents/:/usr/local/ centos /bin/bash

注:-v<宿主机目录>:<容器目录>表示需要将本地哪个目录挂载到容器中,--name centos1表示创建的容器名字

退出容器命令行

& exit

停止容器

& docker stop容器ID

启动容器

& docker start 容器ID

进入容器命令

& docker exec -i -t 容器ID /bin/bash

查看容器命令

& docker ps      默认显示运行的容器

& docker ps –a   显示所有容器

删除容器

& docker rm 容器ID

删除镜像

& docker rmi 镜像ID

3) 安装JDK环境

进入CentOS命令环境,进入jdk存放存放目录,解压

# tar -zxvf jdk8.tar.gz

把jdk移动到/usr/local/java目录下

# mv jdk1.8.0_121 java

配置环境变量

# vi /etc/profile

在最后一行插入(快捷键G->o)

export JAVA_HOME=/usr/local/java/jdk1.8.0_121

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

export CATALINA_HOME=/usr/local/java/tomcat-8.5.12

export CATALINA_BASE=/usr/local/java/tomcat-8.5.12

按ESC退到命令模式,按:wq保存文件并退出vi,运行如下命令使保存生效

# source /etc/profile

查看是否安装成功

# java –version

4) 安装Tomcat

# tar -zxvf tomcat-8.5.tar.gz

把Tomcat移动到/usr/local/java目录下

# mv tomcat-8.5.12 java

启动Tomcat

# cd tomcat-8.5.12/bin

# ./startup.sh    #./shutdown.sh 关闭

5) 创建带JDK和Tomcat的镜像tempos

docker commit af7 tempos

在tempos镜像的基础上配置环境变量

a. 创建一个Dockerfile的目录,在里面建立一个Dockerfile文件,内容如下:

FROM         tempos

#配置java与tomcat环境变量

ENV JAVA_HOME /usr/java/jdk1.8.0_121

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/java/tomcat-8.5.12

ENV CATALINA_BASE /usr/java/tomcat-8.5.12

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#容器运行时监听的端口,多个端口可以继续换行EXPOSE  9200

EXPOSE  8080

b. 命令行中进入Dockerfile目录所在的路径,创建新的镜像javaweb

docker build -t tempos Dockerfile

镜像javaweb即是最终我们要的带开发环境和环境变量的镜像

& docker run -p 8080:8080 -i -t --name javaweb1 javaweb /bin/bash

如果暴露多个端口:-p <host_p1>:<container_p1> -p <host_p2>:<container_2>

启动Tomcat测试

# cd /usr/local/java/tomcat-8.5.12/bin                 ./startup.sh

3. ELK环境搭建

1) 安装和配置ElasticSearch

官网下载ElasticSearch

https://www.elastic.co/

安装ElasticSearch(需安装JDK8及以上版本),并移动至相应目录

# tar -zxvf elasticsearch-5.2.2.tar.gz

# mv elasticsearch-5.2.2 java

配置ElasticSearch

# vi config/elasticsearch.yml

network.host: 0.0.0.0   #设置这个配置,保证本机可以访问(Docker下)

启动ElasticSearch,进入elasticsearch-5.2.2/bin目录,执行

# ./elasticsearch                 # ./elasticsearch –d 不显示控制台信息

注:出于安全考虑,ElasticSearch不能用root账户启动,切换账户即可。

root切换为普通用户:su - username

普通切换为root用户:su - (docker exit退出)

添加用户、修改密码、删除用户

# adduser devin   # passwd devin  # userdel devin

查看用户信息

用户列表文件:/etc/passwd
用户组列表文件:/etc/group

查看所有用户:cut -d : -f 1 /etc/passwd
查看可登录用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

通过下面命令查看是否成功:

curl http://127.0.0.1:9200 #直接输出网站前端源码

2) 安装和配置logstash

官网下载logstash、安装并移到java目录

https://www.elastic.co/downloads/logstash
# tar -zxvf logstash-5.2.2.tar.gz

# mv logstash-5.2.2 java

创建logstash配置文件:

# cd logstash-5.2.2/config

# vi logstash.conf

启动logstash(在目录elasticsearch-5.2.2下执行)

bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts  => "127.0.0.1:9200"} }'

其中也可以直接配置logstash的文件

input { stdin { } }

output {

elasticsearch { hosts => ["localhost:9200"] }

stdout { codec => rubydebug }

}

# ./bin/logstash -f config/logstash.conf

简单测试

bin/logstash -e 'input { stdin { } } output { stdout {} }'

Logstash检测

检测:bin/logstash -f config/logstash.conf --config.test_and_exit

开始:bin/logstash -f config/logstash.conf --config.reload.automatic

3) 安装和配置kibana

官网下载kibana

https://www.elastic.co/downloads/kibana

安装并移到java目录

# tar -zxvf kibana-5.2.2.tar.gz

# mv kibana-5.2.2 java

配置kibana

# cd java/kibana-5.2.2

# vi config/kibana.yml

server.port: 5601

server.host: "0.0.0.0"  #本机可访问

elasticsearch.url: http://127.0.0.1:9200

kibana.index: ".kibana"

启动kibana:

# ./bin/kibana

浏览器访问即可: http://localhost:5601

4) 安装和配置Filebeat

官网下载Filebeat

https://www.elastic.co/downloads/beats

安装并移到java目录

# tar -zxvf filebeat-5.2.2.tar.gz

# mv filebeat-5.2.2 java

编辑filebeat.yml(输出到elasticsearch)

paths:

- /usr/local/appLogs/*

output.elasticsearch:

# Array of hosts to connect to.

hosts: ["127.0.0.1:9200"]

启动filebeat

./filebeat -e -c filebeat.yml -d "publish"

5) 整合Filebeat、Logstash和ElasticSearch

修改Logstash配置文件logstash.conf

input {

beats {

port => 5044

}

}

修改Filebeat配置文件,注释掉其他的Outputs项,打开logstash的Outputs项

output.logstash:

# The Logstash hosts

hosts: ["127.0.0.1:5044"]

--------------------------------------------------------------------
PS: 欢迎关注公众号"Devin说",会不定期更新Java相关技术知识。
--------------------------------------------------------------------

基于Docker的ELK日志平台搭建的更多相关文章

  1. elk日志平台搭建小记

    最近抽出点时间,搭建了新版本的elk日志平台 elastaicsearch 和logstash,kibana和filebeat都是5.6版本的 中间使用redis做缓存,版本为3.2 使用的系统为ce ...

  2. ELK日志平台搭建

    功能: 1. 查看当天的服务器日志信息(要求:在出现警告甚至警告级别以上的都要查询)2. 能够查看服务器的所有用户的操作日志3. 能够查询nginx服务器采集的日志(kibana作图)4. 查看tom ...

  3. Springboot项目使用aop切面保存详细日志到ELK日志平台

    上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例.这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统.同时,由于往往 ...

  4. ELK 日志平台构建

    elastic中文社区 https://elasticsearch.cn/ 完整参考 ELK实时日志分析平台环境部署--完整记录 https://www.cnblogs.com/kevingrace/ ...

  5. 基于Docker的TensorFlow机器学习框架搭建和实例源码解读

    概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...

  6. Springboot项目搭配ELK日志平台

    上一篇讲过了elasticsearch和kibana的可视化组合查询,这一篇就来看看大名鼎鼎的ELK日志平台是如何搞定的. elasticsearch负责数据的存储和检索,kibana提供图形界面便于 ...

  7. 基于Docker&Kubernetes构建PaaS平台基础知识梳理

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 基于Docker&Kubernetes构建Paa ...

  8. 亿级 ELK 日志平台构建部署实践

    本篇主要讲工作中的真实经历,我们怎么打造亿级日志平台,同时手把手教大家建立起这样一套亿级 ELK 系统.日志平台具体发展历程可以参考上篇 「从 ELK 到 EFK 演进」 废话不多说,老司机们座好了, ...

  9. Docker 运行ELK日志监测系统,汉化Kibana界面

    1.ELK日志监控简介 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...

随机推荐

  1. video字幕无法显示,video视频在google中无法控制快进

    video字幕(track)无法显示: 直接用关闭同源策略的浏览器打开你的HTML文件可以请求到字幕文件并显示字幕: 从hbuilder中打开html文件,在从里面打开google浏览器去浏览HTML ...

  2. iOS 处理socket粘包问题

    1.什么是粘包? 粘包通常出现在TCP的协议里面,对于UDP来说是不会出现粘包状况的,之所以出现这种状况的原因,涉及到一种名为Nagle的算法. Nagle算法通过减少必须发送的封包的数量,提高网络应 ...

  3. 利用vmware搭建分布式集群

    背景:      我们需要至少3台服务器来实现分布式,鉴于没那么多钱买真机器,从学习和开发的角度看,只有虚拟机一条路了. 软件选择:     虚拟机使用VMware软件,因为主流而且资料比较多,学习成 ...

  4. Spring Boot系列(一) Spring Boot介绍和基础POM文件

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  5. 来腾讯云开发者实验室 学习.NET Core 2.0

    腾讯云开发者实验室为开发者提供了一个零门槛的在线实验平台,开发者实验室提供的能力: 零门槛扫码即可免费领取实验机器,支持使用自有机器参与,实验完成后支持保留实验成果: 在线 WEB IDE 支持 sh ...

  6. hdu3015 Disharmony Trees

    Problem Description One day Sophia finds a very big square. There are n trees in the square. They ar ...

  7. Swift入门(五)——数组(Array)

    集合 集合的定义 Swift中提供了两种数据结构用于存放数据的集合,各自是数组(Array)和字典(Dictionary). 他们的主要差别在于数组中的元素由下标确定.而字典中的数据的值由数据的键(K ...

  8. Vboxmanage改动uuid报错的解决的方法

    我的环境: Virtualbox 4.3.10 r93012 操作系统:win7 问题:Virtualbox在使用拷贝的虚拟盘时会提示uuid冲突: Because a hard disk with ...

  9. 25个增强iOS应用程序性能的提示和技巧(0基础篇)

    在开发iOS应用程序时,让程序具有良好的性能是非常关键的. 这也是用户所期望的,假设你的程序执行迟钝或缓慢,会招致用户的差评.然而因为iOS设备的局限性,有时候要想获得良好的性能,是非常困难的. 在开 ...

  10. JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 一.缘由 在很多的面向对象编程语言中,我们可以使用命名空间(namespace)来组织代码,避免全局变量污染.命名冲突.遗憾的是,JavaScript中并不提供对命名空间的原生支 ...