使用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包,导致博主一直以为是路径出了问题,反复排查。

猜你喜欢

转载自blog.csdn.net/cool_summer_moon/article/details/106490067