制作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,使用“掃一掃”付款,付款碼見下圖,別忘了付款留言哦!


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM