1 构建基础容器

基于centos环境docker环境快速搭建,执行步骤

docker build -t cenosbase7 .

执行此步骤就可以构建1个基础的centos基础运行环境

相关的文件如下具体内容如下,其中有详细注释

Dockerfile

#Build image 包含了JDK mariadb sshd

#  docker build -t cenosbase7 .

#Run

#-v /sys/fs/cgroup:/sys/fs/cgroup:ro 必须加

# https://hub.docker.com/_/centos/ systemd enabled

# 带提示的启动

# docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name csx cenosbase7

# 守护方式启动

# docker run -tid -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name csx cenosbase7

#1503 not have systemd

#cat /etc/redhat_rlease 7.3

FROM centos:7

MAINTAINER cenosbase

USER root

#https://hub.docker.com/_/centos/

#systemd

# 7.1.1503, RUN yum clean all && yum swap fakesystemd systemd systemd没有安装

ENV container docker

RUN [ -d /lib/systemd/system/sysinit.target.wants ] && (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \

rm -f /lib/systemd/system/multi-user.target.wants/*;\

rm -f /etc/systemd/system/*.wants/*;\

rm -f /lib/systemd/system/local-fs.target.wants/*; \

rm -f /lib/systemd/system/sockets.target.wants/*udev*; \

rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \

rm -f /lib/systemd/system/basic.target.wants/*;\

rm -f /lib/systemd/system/anaconda.target.wants/*;

RUN yum install -y net-tools iproute lsof && \

yum install -y vim-enhanced && \

yum install -y sudo passwd && \

yum install -y iptables && \

yum install -y openssh.x86_64 openssh-server.x86_64 openssh-clients.x86_64 && \

yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 && \

yum install -y mariadb-server.x86_64 mariadb.x86_64 && \

yum install -y mysql-connector-java.noarch

#sshd and root

RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''  && \

ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''  && \

ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N '' && \

sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config  && \

sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config  && \

sed -i "s/#Port.*/Port 23/g" /etc/ssh/sshd_config  && \

echo "root:root" | chpasswd && systemctl enable mariadb.service && systemctl enable sshd.service

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local

#jdk

RUN ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64 /usr/lib/jvm/jdk8

ENV JAVA_HOME /usr/lib/jvm/jdk8

ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH $PATH:$JAVA_HOME/bin

RUN rm /usr/bin/java && ln -s $JAVA_HOME/bin/java /usr/bin/java

#supervisor

RUN rpm -Uvh  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

RUN yum install -y supervisor

RUN mkdir -p /etc/supervisor/

COPY supervisord.conf /etc/supervisor/

#should use systemd

VOLUME [ "/sys/fs/cgroup" ]

#CMD /usr/sbin/init

COPY run.sh /

RUN chown root:root /run.sh && \

chmod 700 /run.sh && yum clean all

#CMD supervisord -c /etc/supervisor/supervisord.conf

CMD /run.sh

EXPOSE 23

supervisord.conf

[unix_http_server]

file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)

[supervisord]

logfile=/var/run/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)

logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)

logfile_backups=10           ; (num of main logfile rotation backups;default 10)

loglevel=info                ; (log level;default info; others: debug,warn,trace)

pidfile=/var/run/supervisor/supervisord.pid ; (supervisord pidfile;default supervisord.pid)

nodaemon=true               ; (start in foreground if true;default false)

minfds=1024                  ; (min. avail startup file descriptors;default 1024)

minprocs=200                 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]

serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket

[program:sshd]

command=/usr/sbin/sshd –D

run.sh

#!/bin/bash

echo "supervisord start..."

supervisord -c /etc/supervisor/supervisord.conf &

echo "init start..."

exec /usr/sbin/init

2 构建hive

基于上一个的镜像,可以构建hive的镜像

docker build -t centoshive .

Dockerfile

#docker build -t centoshive .

#参考了 https://github.com/sequenceiq/hadoop-docker

FROM cenosbase7

MAINTAINER centoshive

USER root

#.tar.gz会自动解压

#http://archive.apache.org/dist/hive/hive-1.1.0/apache-hive-1.1.0-bin.tar.gz

#http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.10.1.tar.gz

ADD pkg/apache-hive-1.1.0-bin.tar.gz /usr/local/

ADD pkg/hadoop-2.6.0-cdh5.10.1.tar.gz /usr/local/

#RUN ls -l /usr/local/

RUN cd /usr/local && ln -s ./hadoop-2.6.0-cdh5.10.1 hadoop && ln -s ./apache-hive-1.1.0-bin hive

ENV HADOOP_PREFIX=/usr/local/hadoop HADOOP_COMMON_HOME=/usr/local/hadoop HADOOP_HDFS_HOME=/usr/local/hadoop

ENV HADOOP_MAPRED_HOME /usr/local/hadoop

ENV HADOOP_YARN_HOME /usr/local/hadoop

ENV HADOOP_CONF_DIR /usr/local/hadoop/etc/hadoop

ENV YARN_CONF_DIR $HADOOP_PREFIX/etc/hadoop

RUN sed -i '/^export JAVA_HOME/ s:.*:export JAVA_HOME=/usr/lib/jvm/jdk8\nexport HADOOP_PREFIX=/usr/local/hadoop\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh && \

sed -i '/^export HADOOP_CONF_DIR/ s:.*:export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/:' $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh

#RUN . $HADOOP_PREFIX/etc/hadoop/hadoop-env.sh

RUN mkdir $HADOOP_PREFIX/input && \

cp $HADOOP_PREFIX/etc/hadoop/*.xml $HADOOP_PREFIX/input

# pseudo distributed

ADD hadoop-cfg/core-site.xml.template $HADOOP_PREFIX/etc/hadoop/core-site.xml.template

RUN sed s/HOSTNAME/localhost/ /usr/local/hadoop/etc/hadoop/core-site.xml.template > /usr/local/hadoop/etc/hadoop/core-site.xml

ADD hadoop-cfg/hdfs-site.xml $HADOOP_PREFIX/etc/hadoop/hdfs-site.xml

ADD hadoop-cfg/mapred-site.xml $HADOOP_PREFIX/etc/hadoop/mapred-site.xml

ADD hadoop-cfg/yarn-site.xml $HADOOP_PREFIX/etc/hadoop/yarn-site.xml

RUN $HADOOP_PREFIX/bin/hdfs namenode -format

# fixing the libhadoop.so like a boss

ADD pkg/hadoop-native-64-2.7.1.tar.gz /usr/local/hadoop/lib/native

# workingaround docker.io build error

RUN chmod +x /usr/local/hadoop/etc/hadoop/*-env.sh

#ssh

ADD ssh_config /root/.ssh/config

RUN chmod 600 /root/.ssh/config

RUN chown root:root /root/.ssh/config

#ssh localhost不用登录

# passwordless ssh

RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key

#RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa

RUN cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys

#hive

ENV HIVE_HOME /usr/local/hive

COPY hive/hive-site.xml /usr/local/hive/conf/.

COPY pkg/mysql-connector-java-5.1.38.jar /usr/local/hive/lib/.

ENV PATH $PATH:/usr/local/hive/bin

#daemon service

RUN mkdir -p /opt/daemon/ && rm -f /run.sh && rm -rf /etc/supervisor/

ADD svc/*.sh /opt/daemon/

COPY svc/*.ini /etc/supervisord.d/

RUN mkdir -p /opt/log && chown root:root /opt/daemon/*.sh && \

chmod 700 /opt/daemon/*.sh

#

COPY svc/locale.conf /etc/

#RUN yum install -y kde-l10n-Chinese

#

CMD /opt/daemon/run.sh

# Hdfs ports

EXPOSE 50010 50020 50070 50075 50090 8020 9000

# Mapred ports

EXPOSE 10020 19888

#Yarn ports

EXPOSE 8030 8031 8032 8033 8040 8042 8088

#hive ports

EXPOSE 10000

其他依赖文件

https://gitee.com/wushifeng/hivedocker/attach_files/download?i=114939&u=http%3A%2F%2Ffiles.git.oschina.net%2Fgroup1%2FM00%2F02%2FC6%2FPaAvDFpfFtOASF8RABMYaUNwYdI5212.gz%3Ftoken%3D08896e8c3e9a49eed5c33d921bd52836%26ts%3D1516181203%26attname%3Dhive-docker.tar.gz

2步安装1个hive docker运行环境[centos7]的更多相关文章

  1. Mac OS 您需要安装旧 Java SE 6 运行环境才能打开“XXX” 问题

    问题描述: 今天在Mac OS上安装一个app的时候提示 “您需要安装旧 Java SE 6 运行环境才能打开 XXX” ,在网上搜索了一下,有说要改app的info.plist文件的,将其中的JVM ...

  2. 【Java SE】如何安装JDK以及配置Java运行环境

    摘要:不管是作为苦逼的Java码农,还是高端大气的Java系统架构师,如果不会安装JDK以及配置Java运行环境,那就巧妇难为无米之炊,不能进行Java后续的代码编写.当然如果你是Myeclipse编 ...

  3. 安装JDK以及配置Java运行环境

    安装JDK以及配置Java运行环境 1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2 ...

  4. docker运行环境安装-centos(一)

    在这里我们使用的是docker的社区版Docker CE,针对的是未安装docker的新的主机,如果安装过docker的早期版本,先卸载它们及关联的依赖资源,安装的版本为docker 18.03. 1 ...

  5. ubuntu 中安装jenkins,基于docker运行jenkins

     本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkin ...

  6. Docker学习笔记之搭建Docker运行环境

    0x00 概述 既然 Docker 是一款实用软件,我们就不得不先从它的安装说起,只有让 Docker 运行在我们的计算机上,才能更方便我们对 Docker 相关知识和使用方式的学习.得益于与商业性的 ...

  7. [IOT] - 在树莓派的 Raspbian 系统中安装 .Net Core 3.0 运行环境

    之前在 Docker 中配置过 .Net Core 运行环境,地址:[IOT] - Raspberry Pi 4 Model B 系统初始化,Docker CE + .Net Core 开发环境配置 ...

  8. Docker03-安装Docker运行环境

    目录 Ubuntu 18 中安装Docker 查看Docker安装信息 查看Docker版本,命令:docker version 查看Docker运行信息,命令: docker info 检查安装是否 ...

  9. centos7最小版本安装nginx+tomcat+java+mysql运行环境

    最近项目从windows搬到linux,由于项目组成员有限并且有其它紧急的任务需要处理,因而这个任务就落到我的头上了.下面记录下centos最小版本安装nginx+tomcat+mysql+java的 ...

随机推荐

  1. mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)

    一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...

  2. 前端JS 与 后台C# 之间JSON序列化与反序列化(笔记)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.   在 前端浏览器 和 后端服务器 之间通常会使用 JSON格式的数据 来进行数据交互,而JSON格式的 ...

  3. 【杂谈】Remember-Me的实现

    前言 此篇随笔记录了Remember-Me实现过程中出现的问题和解决方案,以及相关的思考. 正文 1. RememberMe是什么? RememberMe意为记住我,对应登录界面的那个勾选项.另一种说 ...

  4. go os/exec执行外部程序

    Go提供的os/exec包可以执行外部程序,比如调用系统命令等. 最简单的代码,调用pwd命令显示程序当前所在目录: package main import ( "fmt" &qu ...

  5. 痞子衡嵌入式:恩智浦半导体全系无线(BLE, Zigbee, Thread, 2.4G, Sub-1G)微控制器芯片一览

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦半导体全系列无线微控制器芯片. IoT物联网是未来的趋势,半导体厂商作为IoT产业的上游,主要提供核心的无线芯片,作为半导体知名厂 ...

  6. SQLite占用资源少原因

    本篇承接上篇SQLite详解的下篇,介绍SQLIte为什么占用资源少的原因?本文主要参考https://blog.csdn.net/hanyingzhong/article/details/46400 ...

  7. 【转载】MySql新建账号并分配权限

    在服务器的MySQL运维过程中,我们有时会遇到新建MySql账号的情况,要求新建的账号只允许某些特定的数据库操作权限,只能访问到特定的数据库,实现数据库权限的严格管理,以下以MySQL-Front管理 ...

  8. 在.net中怎么解析json串 [Error reading JObject from JsonReader. Current JsonReader item is not an obj]

    编辑时间:2017-05-10,增加一种转化list的方法 一.以前知道一种解析json串的方法,觉得有点麻烦.就从别的地方搜到了另一种 string json = vlt.getlist(); JO ...

  9. XAML: 在 MVVM 模式中,关于绑定的几处技巧

    以下会提到三个绑定的技巧,分别是 在 ListView 中为 ListViewItem 的 MenuFlyout 绑定 Command: 在 ListView 的 事件中绑定所选择项目,即其 Sele ...

  10. 29.C++- 异常处理

    C++内置了异常处理的语法元素 try catch try语句处理正常代码逻辑 当try语句发现异常时,则通过throw语句抛出异常,并退出try语句 catch语句处理异常情况 当throw语句抛出 ...