Docker部署ELK(二)-构建ELK基础镜像
2017-05-06 本文已影响121人
Luomeng
接上构建ELK基础镜像
了解完故事背景,现在我要动手开始搭建ELK平台了。
因为ELK需要用到jdk的环境,所以决定做一个基础镜像。
参考自:http://www.jianshu.com/p/460a307adebb
1.首先建立目录结构,我是在本地搭建的。
elkbase目录结构解释:因为Elasticsearch需要Java 8以上的版本,所以在oracle官网下载最新的jdk,解压到tools目录下。
Dockerfile文件内容如下:
FROM centos:latest
MAINTAINER Luomeng
VOLUME [ "/opt/product/data/" ]
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN /bin/echo -e "ZONE="Asia/Shanghai"\nUTC=false\nRTC=false" > /etc/sysconfig/clock
RUN mkdir /opt/product/tools/
ADD ./tools /opt/product/tools/
ENV JAVA_HOME /opt/product/tools/jdk1.8.0_131
ENV JRE_HOME /opt/product/tools/jdk1.8.0_131/jre
ENV CLASS_PATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CMD ["/usr/sbin/init"]
✅在命令行,cd到elkbase目录,执行docker build -t elkbase:v1.0 ./
,如果看到最后输出Successfully built 镜像ID
,表示build成功了,运行docker images
应该就可以看到名称为elkbase的image。
✅我要启动一个elkbase的容器,验证一下Java的环境是否准备成功。
运行:docker run -i -t elkbase:v1.0 /bin/bash
(1)-i
选项:表示启动容器后,打开标准收入设备(STDIN),可使用键盘进行输入。
(2)-t
选项:表示启动容器后,分配一个伪终端(pseudo-TTY),将与服务器建立一个会话。
(3)elkbase:v1.0
参数:表示我们刚才通过build命令构建时给镜像命名的名字和版本号。
(4)/bin/bash
参数:表示运行容器的bash应用程序。
不出意外的话,会以root用户进入到基于centos系统构建的elkbase镜像生成的容器中,运行java -version
,查看是否安装Java成功了。