环境:CentOS7.6,1核2G

建议先看后面两步,可以先把yum更新到最新,安装的docker如果与系统匹配上,可能会比较顺利!

1、安装docker

安装docker容易踩坑,如果你喜欢搜各种博客安装,那么各种花式坑就来了。现在请放弃其他无效博客的方法,跟博主一次性搞定(当然你可以自己看官网)。

更新yum

 sudo yum update

彻底卸载docker

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

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils

设置yum源

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

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装docker

 sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

 sudo systemctl start docker

让docker开机自动启动

 sudo systemctl enable docker

安装docker-compose

 sudo yum install docker-compose

编辑docker 安装源,让下载速度更快

vim /etc/docker/daemon.json

复制以下镜像源到编辑的文件中

{ "registry-mirrors":[ "http://hub-mirror.c.163.com", "https://registry.docker-cn.com", "https://hub.docker.com/" ] }

2、安装elk

新建自定义目录,新建docker-compose.yml文件(这个过程叫编排服务)

mkdir /xxx/elk vim dokcer-compose.yml

复制以下内容到新建的docker-compose.yml文件,保存yml文件

version: '3'
services:  
   elasticsearch:    
      image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
      container_name: elasticsearch7.1.1
      environment:
         - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
         - "discovery.type=single-node" #以单一节点模式启动
         - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
         - TZ=Asia/Shanghai    
      volumes:      
         - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
         - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
      ports:      
         - 9200:9200
         - 9300:9300
   kibana:    
      image: docker.elastic.co/kibana/kibana:7.1.1
      container_name: kibana7.1.1
      links:
         - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
      depends_on:      
         - elasticsearch #kibana在elasticsearch启动之后再启动    
      environment:      
         - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
         - TZ=Asia/Shanghai    
      ports:      
         - 5601:5601
      restart: always
   logstash:    
      image: docker.elastic.co/logstash/logstash:7.1.1
      container_name: logstash7.1.1
      environment:
         - TZ=Asia/Shanghai
      volumes:
         - /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
      depends_on:
         - elasticsearch  #kibana在elasticsearch启动之后再启动    
      links:      
         - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
      ports:      
         - 9600:9600
         - 5044:5044
      restart: always

保证在新建的目录下,安装elk三大软件

cd /xxx/elk docker-compose up -d

安装需要一段时间,看网络水平。。。

3、遇到的问题解决

用docker start logstash的时候报错:

Error response from daemon: Cannot restart container 03bab718bc06: oci runtime error: container_linux.go:235: starting container process caused "container init exited prematurely"

尝试解决,有可能是linux和docker版本不匹配导致的

更新yum

yum update

卸载docker

yum remove docker docker-common docker-selinux docker-engine docker-compose

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

设置yum源

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

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装docker

yum install docker-ce

最后执行docker ps -a 发现之前的镜像还在

于是乎想要重启镜像

报错了:

Error response from daemon: Cannot restart container 5ee85460c8d2: no such runtime 'docker-runc'

尝试解决,可能是升级docker的问题

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g' systemctl restart docker

百度执行了一句不知所云的命令后,重启docker

发现之前的镜像可以重启了

BUT,logstash还是启动不起来,于是看了下错误日志

Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

也就是说docker-compose.yml配置文件说的是把一个目录挂到一个文件上??我也不知道为啥!

一顿连贯操作,把目录变成了一个文件,再试试??

踩了个坑啊,这里的logstash一直重启,然后也不知道原因。有可能是没装jdk,用docker restart logstashid 也没有用。。。

最后,安装完jdk后,切换到docker-compose.yml 目录下,一键:

docker-compose restart

启动成功!!!

访问配置的Kibana路径

http://服务器ip:5601/

 

第一次启动可能会发现Elasticsearch无法启动,那是因为/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限

chmod -R 777 /mydata/elasticsearch/

让文件夹获取最高权限,再次重启es

docker restart  容器id

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐