您的位置:首页 > 运维架构 > Docker

基于docker搭建hadoop分布式集群(一)

2015-07-30 19:25 841 查看
《基于docker搭建hadoop分布式集群(一)》主要讨论docker的安装,所用的宿主机系统是fedora22,以下所有命令均在root权限下运行。

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:容器和镜像
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息