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
- 面试Tips
面试Tips 面向对象:准备找工作的同学 内容概述:关于面试的一些经验总结,希望能带给你些许帮助.若有描述不准确的地方,欢迎指点建议. 内容提炼:共分为四阶段 1.面试前之静生慧 (1)课本知识过一遍 ...
- 使用Docker快速部署Storm环境
Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择.下面是我开源的一个新的项目,一个配置好了storm与mono环境的D ...
- 在Docker Swarm上部署Apache Storm:第2部分
[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...
- 在Docker Swarm上部署Apache Storm:第1部分
[编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...
- 【转】OpenStack和Docker、ServerLess能不能决定云计算胜负吗?
还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值460亿美元的SaaS之王.今天谈谈『No ...
- 最近发现docker感觉不错
最近发现docker感觉不错,接下来开始学习docker方面的技术.lxc也可以学学. storm,kafka也要熟悉起来.
- Hadoop on Docker
最初接触Docker是在2013年初,当时Docker才刚起步不久,知之甚少.在不到一年的时间里,Docker已经家喻户晓,成为时下最热门的云计算技术之一,出现了许多围绕docker的新兴产品(仅供参 ...
- docker安装hadoop集群
docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...
- Apache Storm 1.1.0 中文文档 | ApacheCN
前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...
随机推荐
- VS2010打不开VS2012 .NET MVC 工程,及打开后部分模块加载不正确的解决办法
转自http://www.xuebuyuan.com/2042634.html 首先,如果sln打开不正确,用(notepad++)打开sln 比如 VS2010的前两行为: Microsoft Vi ...
- 【转自CSDN】深入 Microsoft.VisualBasic.Strings.StrConv 簡繁轉換
深入 Microsoft.VisualBasic.Strings.StrConv 簡繁轉換 昨天又遇到一個簡繁轉換的需求, 雖然這個問題以前已經處理過了, 但是以前是用自己建立的 b52gb 和 gb ...
- What's DB2 模式?
近期负责一个银行方面的项目,需要用到DB2实现多数据库版本切换.初步接触DB2,对于它的管理工具(IBM DATA STUDIO)虽然与ORACLE\MSSQL大同小异,但还是有些东西不一样的.比如什 ...
- UITabBar的隐藏
方式一: // 重写导航控制器的push方法 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL) ...
- jQuery 事件 方法
jQuery 事件方法 事件方法触发器或添加一个函数到被选元素的事件处理程序. 下面的表格列出了所有用于处理事件的 jQuery 方法. 方法 描述 bind() 向元素添加事件处理程序 blur() ...
- 简单的背包问题(入门)HDU2602 HDU2546 HDU1864
动态规划,我一直都不熟悉,因为体量不够,所以今天开始努力地学习学习. 当然背包从01开始,先选择了一个简单的经典的背包HDU2602. Many years ago , in Teddy's home ...
- 设计模式之 Singleton 单例模式
先上两段代码,区别仅在于是否涉及线程安全. 首先是不涉及多线程的单例: public class Singleton { private final static Singleton INSTANCE ...
- 那些年优秀的HTML5活动页面
一个好的手机活动宣传 更能让人分享 传播是爆炸性的 下面是我平时看到一些好的微信活动宣传页面 分享给大家 其中用到的技术 常做微信活动 专题页面的人 可以看看大神们是怎么做的 这样到自己做的时候 ...
- (转) 关于成为linux运维工程师需要掌握的技能
曾经在一年多前写了一篇关于要成为linux运维需要掌握哪些技能和工具的贴子,然后不小心被好几个网友抄袭转发到其它网站上,当然有些是认识的,最后还很幸运地被某些热心的学习者把那段内容剪下来当作圣经般的参 ...
- keil对51单片机变量和函数的编译处理
(1)初始值不是0的全局变量 在程序调到main()函数执行前,除了要进行内存清零.初始化堆栈外,还需要将全局变量的初始值加载到RAM的指定区域(编译过程中为全局变量分配的空间). (2)未初始化的局 ...