(centos7)搭建基于docker的hadoop集群:一

一、安装docker

1、使用yum方式安装docker

#查看你当前的内核版本
uname -r

#安装 Docker
yum -y install docker

安装好,使用docker verison看是否安装好了。


2、建立docker组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:
$ sudo groupadd docker
将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
退出当前终端并重新登录,进行如下测试。

3、测试是否是否安装成功

$ docker run hello-world

如果有如下输出,那么就安装成功

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly. 

二、安装centos镜像

1、下载镜像

从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

可以直接使用docker pull centos:7命令安装镜像

下载好之后,使用docker image ls查看拥有的镜像

[hadoop@localhost ~]$ docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos        latest              2d194b392dd1        3 weeks ago         195 MB

docker.io/hello-world   latest              f2a91732366c        4 months ago        1.85 kB

一个是centos镜像,另一个是我们之前使用docker run hello-world命令下载的镜像。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

2、运行容器

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。

[hadoop@localhost ~]$ docker run -it --rm centos bash
[root@58f67e873eb9 /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"

REDHAT_SUPPORT_PRODUCT_VERSION="7"

docker run 就是运行容器的命令,说明一下上面用到的参数。

  • -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因 此我们需要交互式终端。
  • --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
  • centos :这是指用centos  镜像为基础来启动容器。
  • bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 CentOS Linux 系统。
最后我们通过 exit 退出了这个容器。

你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。

[hadoop@localhost ~]$docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   1                   195.4 MB            195.4 MB (99%)
Containers          1                   0                   0 B                 0 B
Local Volumes       0                   0                   0 B 

三、运行容器

1、使用命令运行容器

docker run -it -v /home/hadoop/build:/root/build -h master  --name master  centos  /bin/bash

以centos镜像启动一个容器,容器名是master,主机名是master,并且将基于容器的centos系统的/root/build目录与本地/home/hadoop/build共享。

参数解释:

  • -v 表示基于容器的centos系统的/root/build目录与本地/home/hadoop/build共享;这可以很方便将本地文件上传到Docker内部的centos系统;
  • -h 指定主机名为master
  • –-name  指定容器名
  • /bin/bash  使用bash命令

2、刚安装的系统非常纯净,需要安装必备的软件

安装vim :yum intall vim

安装jdk:点击打开链接

 安装完后,需要在/etc/profile中配置环境变量:

 #set java environment 
JAVA_HOME=/usr/java/{java的包名}
JRE_HOME=$JAVA_HOME/jre 
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib 
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 
export JAVA_HOME JRE_HOME CLASS_PATH PATH 

记得使用命令source  /etc/profile   .

使用java -version  查看是否安装成功

后来发现貌似在~/.bashrc文件中设置环境路径更好些,只在/etc/profile设置环境变量会出现错误:

localhost: Error: JAVA_HOME is not set and could not be found.错误,只有使用source /etc/profile 才行。

~/.bashrc文件中设置环境路径

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64

不放心的话可以在/etc/profile和~/.bashrc都设置。

安装ssh:点击打开链接

但是这样的话,就需要每次在开启镜像时,都需要手动开启sshd服务,因此我们把这启动命令写进~/.bashrc文件,这样我们每次登录centos系统时,都能自动启动sshd服务

vim ~/.bashrc

在文件最后写入/usr/sbin/sshd -D &

3、保存镜像文件

现在我们已经有了安装好vim、jdk、ssh客户端服务端的centos容器,但在Docker内部的容器做的修改是不会自动保存到镜像的,也就是说,我们把容器关闭,然后重新开启容器,则之前的设置会全部消失,因此我们需要保存当前的配置;为了达到复用配置信息,我们在每个步骤完成之后,都保存成一个新的镜像,然后开启保存的新镜像即可;需要先到这个网址注册一个账号https://hub.docker.com/;账号注册成功后,然后在主机上(不是容器)新开一个终端,输入以下信息:

docker login

输入相应的用户名、密码,然后会提示登录成功。

有时会提示未连接上,这是可能是因为没有开启doker

$ sudo service docker start  //开启Docker 服务
$ sudo chkconfig docker on   //开机启动

使用命令docker ps查看当前运行的容器:


得到容器的id,也就是上图中container id :3cb1a1ed8ad0 。然后保存镜像,名字为centos/basic(自己取名),

然后使用命令docker commit  3cb1a1ed8ad0  centos/basic

输出sha256:a7e673e7f7b28e185385181a03326adc48b43359e8cc399bce1980dcb83dc565,即保存成功

使用命令docker images 查看当前docker中所有镜像。


 参考:docker从入门到实践

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值