## 准备工作

用到的工具, Xshell5, Xftp5, jdk-7u79-linux-x64.tar.gz, zookeeper-3.4.9.tar.gz, docker.io/centos:latest镜像

关于docker的安装和设置加速, 请参考这篇博文centos7系统下 docker 环境搭建

jdk7和zookeeper 可以去我的百度网盘分享里面拿https://pan.baidu.com/share/home?uk=2567919817

创建工作目录

mkdir -p /z/docker && cd /z/docker

通过Xftp工具把下载的jdk7和zookeeper复制到当前目录

解压缩, 并且重命名文件夹

mkdir jdk && tar -zxvf jdk-7u79-linux-x64.tar.gz -C jdk --strip-components
mkdir zookeeper && tar -zxvf zookeeper-3.4..tar.gz -C zookeeper --strip-components

进入zookeeper下的conf文件夹, 把zoo_sample.cfg复制一份, 重命名为zoo.cfg, zookeeper启动的默认配置文件为zoo.cfg

cp zoo_sample.cfg zoo.cfg

最终目录结构:

[root@localhost docker]# ls
Dockerfile jdk jdk-7u79-linux-x64.tar.gz zookeeper zookeeper-3.4..tar.gz

如果想精简jdk, 压缩最终生成的镜像大小, 可以参考这篇博文 从零开始构建一个centos+jdk7+tomcat7的镜像文件

适量删减jdk包中内容, 再进入下一步操作

## 制作Dockerfile文件

编辑Dockerfile文件, 插入以下内容

#使用的基础镜像
FROM docker.io/centos:latest
#作者信息
MAINTAINER yzzhouyalei "yzzhouyalei@foxmail.com"
#创建目录(这个目录是指将来打包的镜像, 里面的目录, 不是当前的宿主机目录)
RUN mkdir -p /z/java/jdk1..0_79 && mkdir -p /z/java/zookeeper-3.4. && mkdir -p /tmp/zookeeper
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /z/java/jdk1..0_79
ADD zookeeper /z/java/zookeeper-3.4.
#开放端口
EXPOSE
#添加环境变量
ENV JAVA_HOME /z/java/jdk1..0_79
ENV PATH $PATH:$JAVA_HOME/bin
#容器入口
ENTRYPOINT ["/z/java/zookeeper-3.4.9/bin/zkServer.sh"]
#前台运行, 如果不设置这个, zookeeper后台运行的话, 容器会自动关闭, 进入Exited状态
CMD ["start-foreground"]

## 构建镜像

执行命令docker build命令构建镜像

[root@localhost docker]# docker build -t centos-jdk7-zookeeper:0.0.1 .
Sending build context to Docker daemon MB
Step : FROM docker.io/centos:latest
---> 67591570dd29
Step : MAINTAINER yzzhouyalei "yzzhouyalei@foxmail.com"
.............................................#步骤省略
Removing intermediate container 0bb26e35b54d
Successfully built deca0be3af0e
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-jdk7-zookeeper 0.0.1 deca0be3af0e 6 seconds ago 541.5 MB
centos-jdk7-tomcat7 0.0. 1821b3e09e20 days ago 347.7 MB
registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos-jdk7-tomcat7 0.0. 1821b3e09e20 days ago 347.7 MB
192.168.16.181:/centos-jdk-tomcat7 0.0. 1821b3e09e20 days ago 347.7 MB
192.168.16.181:/centos-base 0.0. 67591570dd29 weeks ago 191.8 MB
docker.io/centos latest 67591570dd29 weeks ago 191.8 MB
[root@localhost docker]#

最终镜像大小541MB, 建议精简一下jdk文件夹下的内容应该可以控制在300-400MB之间

## 运行镜像

[root@localhost docker]# docker run -d -p 2181:2181 --name test-zookeeper centos-jdk7-zookeeper:0.0.1
f45d1de49626dc7a9afa6017470eb71a35015e3dd123100749150ff57fa77775
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f45d1de49626 centos-jdk7-zookeeper:0.0. "/z/java/zookeeper-3." seconds ago Up seconds /tcp, 0.0.0.0:->/tcp, /tcp test-zookeeper

-d: 表示后台守护模式运行
-p: 小写p后面跟宿主机端口:容器端口映射
--name: 为启动的容器命名
最后一个参数为repository+tag
看到name为test-zookeeper的容器状态为Up, 说明容器在运行中

## 测试

进入宿主机的zookeeper/bin目录, 运行zkCli.sh客户端, 与容器内的zookeeper交互

[root@localhost bin]# ./zkCli.sh -server localhost:2181
Connecting to localhost:2181
2017-02-15 15:44:55,331 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT
...........................#省略
WATCHER:: WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ####已经连上了
[zk: localhost:2181(CONNECTED) 1] get /zookeeper cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1

用的宿主机IP地址:2181, 连上容器内部的zookeeper了

如果是外部调用的话, 宿主机可能需要开放2181端口

到此步骤->制作docker-jdk7-zookeeper镜像(非集群版) 已经完成

如需帮助可向我发起QQ聊天发起QQ聊天

友情赞助

如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。

赞助方式:打开支付宝App,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!


或使用微信, 不用加好友就能付款

制作docker-jdk7-zookeeper镜像(非集群版)的更多相关文章

  1. Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  2. 使用Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  3. 基于zookeeper的Swarm集群搭建

    简介 Swarm:docker原生的集群管理工具,将一组docker主机作为一个虚拟的docker主机来管理. 对客户端而言,Swarm集群就像是另一台普通的docker主机. Swarm集群中的每台 ...

  4. Docker化高可用redis集群

    最近遇到部分系统因为redis服务挂掉,导致部分服务不可用.所以希望搭建一个redis集群镜像,把原先散落各处的redis服务器统一管理起来,并且保障高可用和故障自动迁移. 一:redis集群分类 大 ...

  5. 同主机下Docker+nginx+tomcat负载均衡集群搭建

    想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

  6. 使用Docker Swarm搭建分布式爬虫集群

    https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...

  7. Zookeeper简介与集群搭建【转】

    Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...

  8. docker下搭建fastfds集群版

    搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成 ...

  9. docker下rabbitMQ高可用集群部署

    第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...

随机推荐

  1. 《模式分类(原书第二版)》pdf格式下载电子书免费下载

    <模式分类(原书第二版)>pdf格式下载电子书免费下载: https://u253469.ctfile.com/fs/253469-302448505 内容简介 <模式分类>( ...

  2. web前端效率提升之禁用缓存-遁地龙卷风

    1.使用场景 我用的是Chrome,Ctrl+F5并不是在任何时候都能清楚缓存,这样很影响效率,下面的方式可以在开发者工具打开的使用禁止浏览器缓存任何资源, 还是出现不及时更新的情况,就要考虑服务器是 ...

  3. 【转】Java中的新生代、老年代、永久代和各种GC

    JVM中的堆,一般分为三大部分:新生代.老年代.永久代: 1 新生代 主要是用来存放新生的对象.一般占据堆的1/3空间.由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收. 新生代又分为 ...

  4. java学习笔记08-switch case语句

    switch是一种选择语句,可以通过匹配某个条件,来执行某块代码 switch(expression){ case value: break;//可选 default://可选 //语句 } swit ...

  5. 03中间件mycat对pxc集群的分片处理

    安装第二个pxc集群 作为mycat的第二个分片 直接拷贝其中的一个虚拟机,然后还原到最初的状态,这样会小很多,启动改一下IP和基础配置,然后再次拷贝这个虚拟机两份改IP重启即可 正常安装pxc集群即 ...

  6. 明确MangoDB在企业中应用

    目录 1.MongoDB是什么? 2.为什么要用MongoDB? 3.主要特性 4.C/S服务模型 5.完善的命令行工具 6.几个shell实操 7.在Java中使用MongoDB 明确MongoDB ...

  7. 主席树+树链剖分——南昌邀请赛Distance on the tree

    学了差不多一星期的主席树+树链剖分,再来看这题发现其实是个板子题 一开始想复杂了,以为要用类似求树上第k大的树上差分思想来解决这道题,但其实树链上<=k的元素个数其实直接可以用树链剖分来求 具体 ...

  8. Linux-SFTP/SSH免密码,钥匙登录

    1.原理 登录的客户端要有私钥,被登录的服务器要保存客户端生成的公钥. 2.修改服务器/etc/ssh/sshd_config设置,如下: sudo vi /etc/ssh/sshd_config P ...

  9. C语言感想---第一次作业

    初入C语言的学习,因为所学薄浅,对于其逻辑的理解还是没有太大问题.唯一的不足是在操作上对全新的字符串式的代码很不熟悉,往往会导致个别字符的遗漏,而这些很细致的东西自己又很难被发现,所以只能慢慢熟练,多 ...

  10. Javascript数据结构与算法--队列(顺序队列、优先队列、循环队列)的实现与用法

    前言 队列和栈非常类似,前面已经讲过了栈的实现与用法,现在我们来说说队列. 队列介绍 队列遵循FIFO(First In First Out,先进先出)原则的一组有序的项. 队列是一种特殊的线性表,特 ...