文档章节

基于Docker的zookeeper实践(1)

王斌_
 王斌_
发布于 2016/09/05 00:03
字数 759
阅读 104
收藏 1

新建Dockerfile

以docker.io的openjdk-8-jre-alpine镜像为基础,基于apine的镜像十分mini。

apine的包管理是apk,apk的源要切换到国内镜像,本处选用阿里云的镜像服务。

zookeeper 当前版本3.4.9,使用国内镜像地址下载,可到官网查看合适的镜像地址,本处使用北京理工大学开源软件镜像服务。

Dockerfile如下:

FROM java:openjdk-8-jre-alpine
MAINTAINER 王斌 <w.billy@qq.com>

ARG MIRROR=http://mirror.bit.edu.cn/apache
ARG VERSION=3.4.9

LABEL name="zookeeper" version=$VERSION
RUN echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/community" >> /etc/apk/repositories \
    && apk update \

RUN apk add --no-cache wget bash \
    && mkdir /opt \
    && wget -q -O - $MIRROR/zookeeper/zookeeper-$VERSION/zookeeper-$VERSION.tar.gz | tar -xzf - -C /opt \
    && mv /opt/zookeeper-$VERSION /opt/zookeeper \
    && cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg \
    && mkdir -p /tmp/zookeeper

EXPOSE 2181 2888 3888

WORKDIR /opt/zookeeper

VOLUME ["/opt/zookeeper/conf", "/tmp/zookeeper"]
ADD run.sh /opt/zookeeper.sh

CMD ["/opt/zookeeper.sh"]

通用配置启动脚本run.sh

#!/bin/sh

ZOO_CFG="/opt/zookeeper/conf/zoo.cfg"

# Output server ID
echo "server id (myid): ${SERVER_ID}"
echo "${SERVER_ID}" > /tmp/zookeeper/myid

# Add additional ZooKeeper servers into the zoo.cfg file
echo "${ADDITIONAL_ZOOKEEPER_1}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_2}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_3}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_4}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_5}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_6}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_7}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_8}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_9}" >> ${ZOO_CFG}
echo "${ADDITIONAL_ZOOKEEPER_10}" >> ${ZOO_CFG}

# Start Zookeeper
exec /opt/zookeeper/bin/zkServer.sh start-foreground

编译

编译镜像文件

[root@localhost zookeeper]# docker build -t w-billy/zookeeper:3.4.9 .
Sending build context to Docker daemon 50.69 kB
Step 1 : FROM java:openjdk-8-jre-alpine
 ---> 87ec762b5790
Step 2 : MAINTAINER 王斌 <w.billy@qq.com>
 ---> Running in 81651a24c88a
 ---> e8fe585d6977
Removing intermediate container 81651a24c88a
Step 3 : ARG MIRROR=http://mirror.bit.edu.cn/apache
 ---> Running in 7b5b768e4762
 ---> e666e7201a3c
Removing intermediate container 7b5b768e4762
Step 4 : ARG VERSION=3.4.9
 ---> Running in 8a742a3be638
 ---> 9e97203703d7
Removing intermediate container 8a742a3be638
Step 5 : LABEL name "zookeeper" version $VERSION
 ---> Running in 21f8bb0535bc
 ---> 92644cff5da7
Removing intermediate container 21f8bb0535bc
Step 6 : RUN echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/main" > /etc/apk/repositories     && echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/community" >> /etc/apk/repositories     && apk update RUN apk add --no-cache wget bash     && mkdir /opt     && wget -q -O - $MIRROR/zookeeper/zookeeper-$VERSION/zookeeper-$VERSION.tar.gz | tar -xzf - -C /opt     && mv /opt/zookeeper-$VERSION /opt/zookeeper     && cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg     && mkdir -p /tmp/zookeeper
 ---> Running in 688201374e13
fetch http://mirrors.aliyun.com/alpine/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://mirrors.aliyun.com/alpine/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://mirrors.aliyun.com/alpine/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
fetch http://mirrors.aliyun.com/alpine/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
v3.4.3-9-g6e6de70 [http://mirrors.aliyun.com/alpine/alpine/v3.4/main]
v3.4.2-11-g9b41a63 [http://mirrors.aliyun.com/alpine/alpine/v3.4/community]
OK: 5968 distinct packages available
 ---> 97009b2412a8
Removing intermediate container 688201374e13
Step 7 : EXPOSE 2181 2888 3888
 ---> Running in 1274f349a12d
 ---> 7020ef406ad9
Removing intermediate container 1274f349a12d
Step 8 : WORKDIR /opt/zookeeper
 ---> Running in b6f403c0e21c
 ---> b4d86cba8150
Removing intermediate container b6f403c0e21c
Step 9 : VOLUME /opt/zookeeper/conf /tmp/zookeeper
 ---> Running in 8c29f1a7d35f
 ---> c244b178d2f6
Removing intermediate container 8c29f1a7d35f
Step 10 : ADD run.sh /opt/zookeeper.sh
 ---> 904c14998900
Removing intermediate container 2770a94862eb
Step 11 : CMD /opt/zookeeper.sh
 ---> Running in 4e6930254d32
 ---> 91f2e2e18f98
Removing intermediate container 4e6930254d32
Successfully built 91f2e2e18f98
[root@localhost zookeeper]# docker-compose -v
docker-compose version 1.8.0, build f3628c7
[root@localhost zookeeper]# ^C
[root@localhost zookeeper]# cat Dockerfile 
FROM java:openjdk-8-jre-alpine
MAINTAINER 王斌 <w.billy@qq.com>

ARG MIRROR=http://mirror.bit.edu.cn/apache
ARG VERSION=3.4.9

LABEL name="zookeeper" version=$VERSION
RUN echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/main" > /etc/apk/repositories \
    && echo "http://mirrors.aliyun.com/alpine/alpine/v3.4/community" >> /etc/apk/repositories \
    && apk update \

RUN apk add --no-cache wget bash \
    && mkdir /opt \
    && wget -q -O - $MIRROR/zookeeper/zookeeper-$VERSION/zookeeper-$VERSION.tar.gz | tar -xzf - -C /opt \
    && mv /opt/zookeeper-$VERSION /opt/zookeeper \
    && cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg \
    && mkdir -p /tmp/zookeeper

EXPOSE 2181 2888 3888

WORKDIR /opt/zookeeper

VOLUME ["/opt/zookeeper/conf", "/tmp/zookeeper"]
ADD run.sh /opt/zookeeper.sh

CMD ["/opt/zookeeper.sh"]

查看生成的镜像

[root@localhost zookeeper]# docker images
REPOSITORY                              TAG                       IMAGE ID            CREATED             SIZE
w-billy/zookeeper                       3.4.9                     91f2e2e18f98        44 minutes ago      151.9 MB

项目源码http://git.oschina.net/w.billy/zookeeper

© 著作权归作者所有

王斌_
粉丝 1
博文 7
码字总数 4266
作品 0
通州
技术主管
私信 提问
docker容器中搭建kafka集群环境

Kafka集群管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一、软件环境: zookeeper集群需要超过半数的的node存活才能对外服务,所以服务器的数量应该是2...

qq_41587243
2018/05/25
0
0
使用docker安装kafka

我们这里使用第三方docker镜像来安装kafka环境,分别是:wurstmeister/kafka 和 wurstmeister/zookeeper ,如需修改和自定义请查看对应的Dockerfile。 下载镜像 sudo docker pull wurstmeis...

John
2018/06/15
0
0
服务化改造实践(一)| Dubbo + ZooKeeper

“没有最好的技术,只有最合适的技术。”我想这句话也同样适用于微服务领域,没有最好的服务框架,只有最适合自己的服务改造。在 Dubbo 的未来规划中,除了保持自身技术上的领先性,关注性能...

中间件小哥
2018/08/16
0
0
docker入门到实战(6)在docker中安装和使用kafka

下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像,在hub.docker.com中可以搜索到。 1、docker pull wurstmeister/zookeeper 2、docker pull wurstmeister/...

编程老司机
2018/05/14
0
0
docker 安装zookeeper

1.下拉镜像: docker pull zookeeper 2.运行镜像: 此处未采取在主机上保存配置文件,则当docker服务重启,数据文件和配置文件等都会被重新初始化。 docker run -p 2181:2181 --name myZooke...

狼王黄师傅
2018/10/23
464
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部