基于docker搭建hadoop分布式集群(一)
2015-07-30 19:25
841 查看
《基于docker搭建hadoop分布式集群(一)》主要讨论docker的安装,所用的宿主机系统是fedora22,以下所有命令均在root权限下运行。
Dokcer是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在PC机上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bara metal、OpenStack集群和其他的基础应用平台。
在安装完成docker之后,可以使用docker info查看系统信息,包括镜像和容器数。
因此在启动docker时,必须首先启动docker服务端,使用如下命令启动:
&代表以后台程序运行。
为了避免在系统每次启动时都运行上述命令,使用如下命令设置docker随系统启动:
使用如下命令可以下载一个镜像:
如:
上述命令拉取到了一个ubuntu 14.04的镜像
Note
在用上述命令拉取到一个镜像时,我一直以为该镜像fedora的环境,结果在使用时发现其用的软件包管理命令居然是apt-get!!!
该问题留待以后继续研究^_^
拉取到镜像之后,可以用如下命令查看所有的镜像:
在有了一个镜像之后,可以通过docker run启动一个镜像作为一个容器运行,在该容器中可以运行命令。
如:
该命令启动ubuntu 14.04镜像,默认运行的命令为/bin/bash。
Note
在使用docker命令时,可能会碰到如下问题:
出现该问题可能有如下两种情况:
使用docker命令时需要root权限
没有启动docker服务端
使用如下命令即可启动容器:
将该命令作如下分解:
其中,相关参数包括:
-i :表示以“交互模式“运行容器
-t :表示容器启动后会进入其命令行
-v :表示需要将本地哪个目录挂在到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们所有的安装程序都放在了宿主机的/root/software目录下,现在需要将其挂载到容器的/mnt/software目录下。
需要说明的是,不一定要使用“镜像 ID“,也可以使用“仓库名:标签名“。
启动容器之后,可以查看容器内的目录结构如下:
可以看出该容器与宿主机有相同的目录结构。
首先,解压JDK程序包:
然后,重命名JDK目录:
Note
在将宿主机的
然后,在该文集末尾添加如下配置:
最后,需要使用
为了以后可以继续在此基础上构建其他镜像,可以将装好的java镜像保存为一个副本。
首先使用
如:
最后使用如下命令将装入jdk的容器保存为新的镜像:
Note
可能在使用容器中的
这时可能会碰到容器中网络不通的情况,这时可以在宿主机下使用如下命令:
然后再重新启动容器即可。
docker 入门教程指南
使用 Docker 搭建 Java Web 运行环境
深入 Docker:容器和镜像
Dokcer是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在PC机上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bara metal、OpenStack集群和其他的基础应用平台。
一、docker安装
1. 安装
使用dnf安装docker:dnf install -y docker
在安装完成docker之后,可以使用docker info查看系统信息,包括镜像和容器数。
2. 启动
Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。因此在启动docker时,必须首先启动docker服务端,使用如下命令启动:
docker -d &
&代表以后台程序运行。
为了避免在系统每次启动时都运行上述命令,使用如下命令设置docker随系统启动:
chkconfig docker on
3.使用
使用docker之前必须理解两个概念,一个一个是image,一个是container。实际上,image是只读的模板,用来生成所需要的container,而container也可以变成新的image。使用如下命令可以下载一个镜像:
docker pull <镜像名:tag>
如:
docker pull ubuntu:14.04
上述命令拉取到了一个ubuntu 14.04的镜像
Note
docker pull fedora:22
在用上述命令拉取到一个镜像时,我一直以为该镜像fedora的环境,结果在使用时发现其用的软件包管理命令居然是apt-get!!!
该问题留待以后继续研究^_^
拉取到镜像之后,可以用如下命令查看所有的镜像:
docker images
在有了一个镜像之后,可以通过docker run启动一个镜像作为一个容器运行,在该容器中可以运行命令。
如:
docker run -it ubuntu:14.04
该命令启动ubuntu 14.04镜像,默认运行的命令为/bin/bash。
Note
在使用docker命令时,可能会碰到如下问题:
出现该问题可能有如下两种情况:
使用docker命令时需要root权限
没有启动docker服务端
二、在容器中搭建Java运行环境
1.启动容器
容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。使用如下命令即可启动容器:
docker run -it -v /root/software:/mnt/software/ ubuntu:14.04 /bin/bash
将该命令作如下分解:
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i :表示以“交互模式“运行容器
-t :表示容器启动后会进入其命令行
-v :表示需要将本地哪个目录挂在到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们所有的安装程序都放在了宿主机的/root/software目录下,现在需要将其挂载到容器的/mnt/software目录下。
需要说明的是,不一定要使用“镜像 ID“,也可以使用“仓库名:标签名“。
启动容器之后,可以查看容器内的目录结构如下:
可以看出该容器与宿主机有相同的目录结构。
2.安装JDK
为了搭建Java运行环境,需要安装JDK,下面的过程均在容器内部进行。暂且选择/opt/目录作为安装目录,首先需要cd /opt/命令进入该目录。
首先,解压JDK程序包:
tar -zxvf /mnt/software/jdk-xxx.tar.gz -C .
然后,重命名JDK目录:
mv jdk-xxx/ jdk/
Note
在将宿主机的
/root/software目录挂载到容器的
/mnt/software下,在使用该目录时可能会碰到selinux问题,因此需要在宿主机上运行如下命令添加一条selinux规则:
chcon -Rt svirt_sandbox_file_t /root/software
3.设置环境变量
首先,编辑.bashrc文件
vim ~/.bashrc
然后,在该文集末尾添加如下配置:
export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME
最后,需要使用
source命令让环境变量生效:
source ~/.bashrc
为了以后可以继续在此基础上构建其他镜像,可以将装好的java镜像保存为一个副本。
首先使用
exit命令退出当前容器,然后使用如下命令查询当前退出容器的ID:
docker ps -a
如:
最后使用如下命令将装入jdk的容器保存为新的镜像:
docker commit -m "java install" <container ID> ubuntu:java
Note
可能在使用容器中的
vim命令时会提示没有该命令,这时需要使用如下命令安装
vim编辑器:
apt-get install -y vim
这时可能会碰到容器中网络不通的情况,这时可以在宿主机下使用如下命令:
pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 docker -d &
然后再重新启动容器即可。
参考资料
如何在 Fedora 22 上面配置 Apache 的 Docker 容器docker 入门教程指南
使用 Docker 搭建 Java Web 运行环境
深入 Docker:容器和镜像
相关文章推荐
- 升级fedora16beta遇到的问题
- 详解HDFS Short Circuit Local Reads
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- 你应该选择 Ubuntu 还是 Fedora?
- 单机版搭建Hadoop环境图文教程详解
- Fedora 14安装全面体验[图文]
- 15岁生日快乐,Fedora Linux!
- 8个你可能不知道的Docker知识
- Fedora Linux 7 Test 4 发布 下载地址
- C#分布式事务的超时处理实例分析
- Erlang分布式节点中的注册进程使用实例
- hadoop常见错误以及处理方法详解
- Fedora环境下装MySQL命令方法介绍
- 在Fedora 10下配置SVN服务器的步骤
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享