1. 安装Docker
 
(1)确认系统版本
 
sudo lsb_release -a
 
 
注:如果提示找不到命令“lsb_release”,使用“yum install redhat-lsb”进行安装。
 
(2)安装Docker
 
sudo yum install docker.x86_64(Docker Version: 1.9.1)
 
Docker的默念存储位置:/var/lib/docker,磁盘空间通常比较小,建议将其更换至磁盘空间比较充足的目录,如:
 
sudo mkdir -p /data0/docker-lib
 
sudo cp -R /var/lib/docker/* /data0/docker-lib/
 
sudo rm -rf /var/lib/docker
 
sudo ln -s /data0/docker-lib/ /var/lib/docker
 
为了避免每次运行Docker实例时打印警告信息:
 
 
执行如下操作:
 
vim /etc/sysconfig/docker-storage
 
DOCKER_STORAGE_OPTIONS=--storage-opt dm.no_warn_on_loop_devices=true
 
(3)启动Docker
 
sudo service docker start
 
(4)查看Docker运行状态
 
 
(5)停止Docker
 
sudo service docker stop
 
2. 安装Docker Insecure Registry
 
Docker Registry的作用是一个Docker Image的私有仓库,它的安装过程实际就是运行一个Docker Registry实例,
 
docker run -d -p 80:5000 --restart=always --name registry -v /data0/docker-registry:/var/lib/registry registry:2.4.1
 
这里有三个地方需要注意:
 
(1)映射端口:5000 --> 80,其中80为宿主机端口;
(2)挂载目录:/var/lib/registry --> /data0/docker-registry,其中“/data0/docker-registry”为宿主机目录;
(3)使用这种方式搭建的“仓库”是没有认证和授权的;
 
Docker Client(相对于Docker Insecure Registry而言)与Docker Insecure Registry交互时需要以下配置:
 
vim /etc/sysconfig/docker
 
OPTIONS='--selinux-enabled'
 
-->
 
OPTIONS='--selinux-enabled --insecure-registry=mydomain'
 
其中,mydomain可以为域名,也可以HostIP:Port。
 
配置完成之后,需要重启Docker Client Service:
 
sudo service docker restart
 
3. 构建自己的Docker CentOS Image
 
这里的构建实际是一个“拉取官方镜像——修改镜像名称——推送镜像至私有仓库”的过程。
 
(1)从Docker Hub拉取官方镜像
 
docker pull centos:centos7.1.1503
 
(2)修改镜像名称
 
docker tag docker.io/centos:centos7.1.1503 mydomain/centos:centos7.1.1503
 
(3)推送镜像
 
docker push mydomain/centos:centos7.1.1503
 
4. 构建Docker Storm Image
 
(1)创建目录
 
mkdir -p /usr/home/yurun/storm-docker
 
(2)下载依赖文件
 
jdk-8u45-linux-x64.rpm(官方推荐使用Java 6,但实测需要使用Java 7,考虑到平台实际情况,使用Java 8)
 
Python-2.6.6.tgz
 
apache-storm-1.0.1.tar.gz
 
将上述文件拷贝至目录:/usr/home/yurun/storm-docker。
 
(3)编写Dockerfile
 
vim /usr/home/yurun/storm-docker/Dockerfile
 
FROM mydomain/centos:centos7.1.1503
 
RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf(DNS设置)
 
COPY jdk-8u45-linux-x64.rpm /tmp/jdk-8u45-linux-x64.rpm
 
RUN rpm -ivh /tmp/jdk-8u45-linux-x64.rpm(Java安装路径: /usr/java/jdk1.8.0_45)
 
RUN yum -y install gcc gcc-c++(编译安装Python使用)
 
RUN yum -y install make(编译安装Python使用)
 
COPY Python-2.6.6.tgz /tmp/Python-2.6.6.tgz
 
RUN yum -y install tar(解压Python安装包使用)
 
RUN tar zxvf /tmp/Python-2.6.6.tgz -C /tmp/
 
WORKDIR /tmp/Python-2.6.6
 
RUN ./configure --prefix=/usr/lib/python2.6.6
 
RUN make
 
RUN make install
 
RUN ln -s /usr/lib/python2.6.6/bin/python /usr/bin/python2.6
 
COPY apache-storm-1.0.1.tar.gz /tmp/apache-storm-1.0.1.tar.gz
 
RUN tar zxvf /tmp/apache-storm-1.0.1.tar.gz -C /tmp/
 
RUN mv /tmp/apache-storm-1.0.1 /usr/lib/apache-storm-1.0.1
 
RUN rm -rf /tmp/*
 
WORKDIR /
 
(4)构建镜像
 
docker build -t mydomain/storm:1.0.1 /usr/home/yurun/strom-docker/
 
(5)推送境像
 
docker push mydomain/storm:1.0.1
 
5. 使用Docker Storm Image
 
(1)创建Storm配置目录及文件
 
创建Storm配置目录:
 
mkdir -p /etc/storm/conf
 
从Storm原始安装目录中拷贝以下文件至配置目录:
 
storm_env.ini
storm-env.sh
storm.yaml
 
 
vim /etc/storm/conf/storm-env.sh
 
export JAVA_HOME=/usr/java/jdk1.8.0_45
 
 
vim /etc/storm/conf/storm.yaml
 
storm.zookeeper.servers:
    - "ZooKeeperHost"
 
storm.zookeeper.port: 2181
 
storm.zookeeper.root: "/storm_docker"
 
storm.local.dir: "/data0/storm"
 
storm.log.dir: "/var/log/storm"
 
nimbus.seeds: ["NimbusHost"]
 
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
    - 6704
    - 6705
    - 6706
    - 6707
    - 6708
    - 6709
    - 6710
    - 6711
    - 6712
    - 6713
    - 6714
    - 6715
    - 6716
    - 6717
    - 6718
    - 6719
    - 6720
    - 6721
 
worker.childopts: "-Xmx6144m -XX:MaxPermSize=64m -XX:+UseConcMarkSweepGC -Xmn2300m -XX:SurvivorRatio=2 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=65 -XX:+UseCMSCompactAtFullCollection -XX:+PrintClassHistogram -verbose:gc -XX:+PrintGCDateStamps -Xloggc:/var/log/storm/worker_%ID%_gc.log"
 
nimbus.task.timeout.secs: 40
 
(2)运行Storm nimbus
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm nimbus
 
(3)运行Storm Supervisor
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm supervisor
 
(4)运行Run Storm UI
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm ui
 
注意:上述三步操作中网络模式一律使用宿主机模式:--net=host。
 
(5)查看Storm运行状态
 
http://NimbusHost:8080 

Storm On Docker的更多相关文章

  1. 面试Tips

    面试Tips 面向对象:准备找工作的同学 内容概述:关于面试的一些经验总结,希望能带给你些许帮助.若有描述不准确的地方,欢迎指点建议. 内容提炼:共分为四阶段 1.面试前之静生慧 (1)课本知识过一遍 ...

  2. 使用Docker快速部署Storm环境

    Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择.下面是我开源的一个新的项目,一个配置好了storm与mono环境的D ...

  3. 在Docker Swarm上部署Apache Storm:第2部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  4. 在Docker Swarm上部署Apache Storm:第1部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  5. 【转】OpenStack和Docker、ServerLess能不能决定云计算胜负吗?

    还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值460亿美元的SaaS之王.今天谈谈『No ...

  6. 最近发现docker感觉不错

    最近发现docker感觉不错,接下来开始学习docker方面的技术.lxc也可以学学. storm,kafka也要熟悉起来.

  7. Hadoop on Docker

    最初接触Docker是在2013年初,当时Docker才刚起步不久,知之甚少.在不到一年的时间里,Docker已经家喻户晓,成为时下最热门的云计算技术之一,出现了许多围绕docker的新兴产品(仅供参 ...

  8. docker安装hadoop集群

    docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...

  9. Apache Storm 1.1.0 中文文档 | ApacheCN

    前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...

随机推荐

  1. ASP.NET MVC 第六回 过滤器Filter

    在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置 实现动态Action Filter是一种声明式编 ...

  2. asp.net 使用IHttpModule 做权限检查 登录超时检查(转)

    IHttpModule 权限 检查 登录超时检查 这样就不需要每个页面都做一次检查 也不需要继承任何父类. using System;using System.Collections.Generic; ...

  3. javascript创建对象的7种方式

    /*1.工厂模式*/ function createPerson(name,age,job) { var o = new object(); o.name = name; o.age = age; o ...

  4. 对于EditText的详细用法

    EditText这个控件对于每一个Android开发者来说都是再熟悉不过了,但是,为什么有的人的EditText可以表现的那么好看,而刚入学Android的程序员来讲却丑到爆.这就充分的说明对于Edi ...

  5. "Unable to get image data from canvas because the canvas has been tainted by cross-origin data"问题产生原因及解决办法

    一.问题描述: 在支持html5的浏览器中运行javascript脚本,脚本主要是操作网页上的标签canvas,出错的操作为, getImageData(img,……), chrome 下出错信息为: ...

  6. MFC中控件的TAB顺序 ----转载

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

  7. 24种设计模式--抽象工厂模式【Abstract Factory Pattern】

    女娲造人,人是造出来了,世界是热闹了,可是低头一看,都是清一色的类型,缺少关爱.仇恨.喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办?抹掉重来,然后就把人类 ...

  8. 《Velocity java开发指南》中文版(下)转载

    文章出自:http://sakyone.iteye.com/blog/524292 8.Application Attributes Application Attributes (应用程序属性)是和 ...

  9. 【随记】SQL Server连接字符串参数说明

    废话不多说,请参见 SqlConnection.ConnectionString .

  10. smarty 模板 数字自动添加

    section: section的产生是为解决foreach的不足的,与foreach一样,它用于设计模板内的循环块,它较为复杂,可极大程序上满足程序需要,所以在程序中我习惯使用它而不使用foreac ...