使用Dockerfile製作Zookeeper鏡像

引言

前面介紹的都是使用官方鏡像文件部署應用,現在我們來定製自己的鏡像,本文選的是Zookeeper爲例,介紹怎麼寫 Dockerfile 文件。

1、Dockerfile介紹

Dockerfile文件就是一個工藝流程,裏面包含一道道的工序(如果是機械專業的肯定懂我在說什麼)。
通俗的講:你要製造一輛汽車,首先需要準備四個輪子、一個車頭、一個車身,然後將三部分組裝成汽車,加滿油,奔跑吧,我的車!Dockerfile就是上面組裝的過程。

2、實例

下面會涵蓋一些常用的命令,更多的請參考Docker教程

  1. 新建zoo.cfg配置文件
[root@localhost zookeeper]# pwd
/home/zookeeper
[root@localhost zookeeper]# ll
total 4
-rw-r--r--. 1 root root 140 Jun  2 12:35 zoo.cfg
  1. 配置文件內容:
tickTime=2000
initLimit=10
syncLimit=5
#指定目錄
dataDir=/data/zookeeper
#指定端口
clientPort=2181
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
  1. 解壓jdk到指定文件夾並指定包名:jdk(jar包鏈接地址 提取碼:3b6s)
[root@localhost jdk]# pwd
/home/zookeeper/jdk
[root@localhost jdk]# ll
total 25996
drwxr-xr-x. 2 root root     4096 Jun  2 13:51 bin
-r--r--r--. 1 root root     3244 Jun  2 13:51 COPYRIGHT
drwxr-xr-x. 3 root root     4096 Jun  2 13:51 include
-rw-r--r--. 1 root root  5213825 Jun  2 13:51 javafx-src.zip
drwxr-xr-x. 5 root root     4096 Jun  2 13:51 jre
drwxr-xr-x. 5 root root     4096 Jun  2 13:51 lib
-r--r--r--. 1 root root       44 Jun  2 13:51 LICENSE
drwxr-xr-x. 4 root root       44 Jun  2 13:51 man
-r--r--r--. 1 root root      159 Jun  2 13:51 README.html
-rw-r--r--. 1 root root      424 Jun  2 13:51 release
-rw-r--r--. 1 root root 21104792 Jun  2 13:51 src.zip
-rw-r--r--. 1 root root   112748 Jun  2 13:51 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r--. 1 root root   149725 Jun  2 13:51 THIRDPARTYLICENSEREADME.txt
  1. 解壓zookeeper到指定文件夾並命名爲:zk
[root@localhost zk]# pwd
/home/zookeeper/zk
  1. 編寫啓動配置文件zookeeper.sh
[root@localhost zookeeper]# ll
total 193768
-rw-r--r--.  1 root root       140 Jun  2 12:35 zoo.cfg
drwxr-xr-x.  7 root root      4096 Jun  2 13:52 jdk
drwxr-xr-x. 14 root root      4096 Jun  2 13:52 zk
-rw-r--r--.  1 root root       183 Jun  2 13:12 zookeeper.sh

zookeeper.sh文件內容:

#!/bin/sh
export ZOOKEEPER_HOME=/zk
mkdir -p /data/zookeeper
${ZOOKEEPER_HOME}/bin/zkServer.sh start-foreground
  1. 將zoo.cfg移動到zk/conf/下,並將文件打包
[root@localhost zookeeper]# mv zoo.cfg zk/conf/
[root@localhost zookeeper]# tar -zcvf zookeeper_cool.tar.gz .
  1. 編寫Dockerfile
[root@localhost zookeeper]# ll
total 193696
-rw-r--r--.  1 root root       425 Jun  2 14:05 Dockerfile
drwxr-xr-x.  7 root root      4096 Jun  2 13:52 jdk
drwxr-xr-x. 14 root root      4096 Jun  2 13:52 zk
-rw-r--r--.  1 root root 198326063 Jun  2 14:13 zookeeper_cool.tar.gz
-rw-r--r--.  1 root root       183 Jun  2 13:12 zookeeper.sh

配置文件內容:

# FROM命令 定義基礎包
FROM centos:latest
# ADD命令 將打包文件上傳到鏡像的根目錄/ ,會自動解壓
ADD zookeeper_cool.tar.gz /
# WORKDIR命令 定義工作目錄
WORKDIR /
# ENV命令 設置環境
ENV JAVA_HOME /jdk
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $JAVA_HOME/bin:$PATH
# RUN命令 執行製作鏡像過程,一個RUN對應一層
RUN yum clean all \
&& rm -vf /etc/localtime \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\
&& rm -rfv /usr/share/backgrounds/* \
&& rm -rfv /usr/share/doc/* \
&& rm -rfv /usr/share/man/* \
&& cd /usr/share/zoneinfo/ && ls |grep -v "Asia"|xargs rm -rfv \
&& rm -rfv /var/cache/yum/* \
&& rpm --rebuilddb \
&& chmod 755 /zookeeper.sh
ENTRYPOINT /zookeeper.sh
  1. 創建鏡像(注意最後一個 . 不要忘記了)
[root@localhost zookeeper]# docker image build -t zookeeper_cool:v1.0 .
  1. 查看製作的鏡像是否成功
    在這裏插入圖片描述

3、啓動自定義zookeeper

  1. 啓動自定義鏡像
[root@localhost zookeeper]# docker run --rm --name coolsummer -p 2181:2181 -d zookeeper_cool:v1.0
  1. 查看是否啓動
    在這裏插入圖片描述

結束語

製作鏡像一定要理解本機環境和鏡像環境,否則路徑會分不清楚。
說一個自己踩的坑,zookeeper官網上面最新的包,解壓後沒有src和jar包,導致博主一直以爲是路徑出了問題,反覆排查。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章