## 準備工做html
用到的工具, Xshell5, Xftp5, jdk-7u79-linux-x64.tar.gz, zookeeper-3.4.9.tar.gz, docker.io/centos:latest鏡像java
關於docker的安裝和設置加速, 請參考這篇博文centos7系統下 docker 環境搭建linux
jdk7和zookeeper 能夠去個人百度網盤分享裏面拿https://pan.baidu.com/share/home?uk=2567919817docker
建立工做目錄shell
mkdir -p /z/docker && cd /z/docker
經過Xftp工具把下載的jdk7和zookeeper複製到當前目錄centos
解壓縮, 而且重命名文件夾tomcat
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
最終目錄結構:tcp
[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,使用「掃一掃」付款,付款碼見下圖,別忘了付款留言哦!
或使用微信, 不用加好友就能付款