zoukankan      html  css  js  c++  java
  • 制作docker-jdk7-zookeeper镜像(非集群版)

    ## 准备工作

    用到的工具, 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 1
    mkdir zookeeper && tar -zxvf zookeeper-3.4.9.tar.gz -C zookeeper --strip-components 1

    进入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.9.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.7.0_79 && mkdir -p /z/java/zookeeper-3.4.9 && mkdir -p /tmp/zookeeper
    #把当前目录下的jdk文件夹添加到镜像
    ADD jdk /z/java/jdk1.7.0_79
    ADD zookeeper /z/java/zookeeper-3.4.9
    #开放端口
    EXPOSE 2181 2888 3888
    #添加环境变量
    ENV JAVA_HOME /z/java/jdk1.7.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   529 MB
    Step 1 : FROM docker.io/centos:latest
     ---> 67591570dd29
    Step 2 : 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.1               1821b3e09e20        2 days ago          347.7 MB
    registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos-jdk7-tomcat7   0.0.2               1821b3e09e20        2 days ago          347.7 MB
    192.168.16.181:5000/centos-jdk-tomcat7                            0.0.2               1821b3e09e20        2 days ago          347.7 MB
    192.168.16.181:5000/centos-base                                   0.0.1               67591570dd29        8 weeks ago         191.8 MB
    docker.io/centos                                                  latest              67591570dd29        8 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.1   "/z/java/zookeeper-3."   3 seconds ago       Up 2 seconds        2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/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,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!


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

  • 相关阅读:
    LightOJ--1094-- Farthest Nodes in a Tree(树的直径裸题)
    poj--1383--Labyrinth(树的直径)
    C字符数组和C++字符串
    Miracl库学习
    GBDT学习
    Java编程规范
    关于JS中的数组[]的方法
    焦点离开事件
    Firebug 安装方法
    JAVASE 中的String的字符串
  • 原文地址:https://www.cnblogs.com/zhouyalei/p/6400951.html
Copyright © 2011-2022 走看看