接上構建ELK基礎鏡像
了解完故事背景,現在我要動手開始搭建ELK平臺了。
因為ELK需要用到jdk的環境,所以決定做一個基礎鏡像。
參考自:http://www.lxweimin.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成功了。