利用 Docker 搭建 大数据生态集群

Docker 初学

Posted by GG on October 21, 2018

本文 以写一个开机自启动各种命令的脚本文件 为目的学习Shell 脚本

1 Centos 换源

1.1 方式一:使用国内的阿里云镜像 或者 网易

1、 把/etc/yum.repos.d/下面所有的源给删除掉了

2、 下载镜像

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

注意如果没有安装wget,可以从下面的网址中先手动下载,然后上传到linux上安装: http://www.rpmfind.net/linux/rpm2html/search.php?query=wget

3、 执行命令,重新生成cache

yum clean all  
yum makecache  
yum update

1.2 方式二:使用官网的镜像

1、 把/etc/yum.repos.d/下面所有的源给删除掉了

2、 执行下面的命令,重新生成镜像

rpm -Uvh --force http://mirror.centos.org/centos-7/7/os/x86_64/Packages/centos-release-7-4.1708.el7.centos.x86_64.rpm    

3、 查看/etc/yum.repos.d/下面目录,就会发现镜像已经安装完毕:

4、生成缓存

yum clean all  
yum makecache  
yum update

阿里云ECS之Centos7下载文件出现”wget: unable to resolve host address”:

vi /etc/resolv.conf            添加
nameserver 8.8.8.8
nameserver 8.8.4.4

2 安装Docker

2.1 Docker版本说明

1、 docker.io: is used to be very old version in default ubuntu repo (can skip here)

2、 docker-engine: is used before release 1.13.x

3、 docker-ce: since 17.03

2.2 安装步骤

1、安装 yum-utils, yum-utils

作用是提供了 yum-config-manager工具 :

yum install -y yum-utils

2、使用稳定的docker-ce资源包

docker-ce 社区版

yum-config-manager \
   	--add-repo \
  		 https://download.docker.com/linux/centos/docker-ce.repo

3、是否允许使用 edge docker

允许使用edge docker

sudo yum-config-manager --enable docker-ce-edge

禁止使用edge docker(默认),使用stable docker

sudo yum-config-manager --disable docker-ce-edge

4、安装 docker

更新yum包索引,加快检索速度

yum makecache fast

安装Docker CE

yum install docker-ce

5、启动Docker

 systemctl start docker 

6、拉取ubuntu镜像

 docker pull ubuntu:16.04

其中 ubuntu 为镜像名称,16.04为Tag

7、运行ubuntu镜像

docker run -ti ubuntu:16.04

其中 -t新开终端 -i交互式

8、换阿里云源

由于拉取的ubuntu 镜像的采用的源是 ubuntu 自带的,因此换位阿里云的源,便于之后下载各种软件。

Step1. 备份sources.list

cp /etc/apt/sources.list /etc/apt/sources.list.bak

Step2. 更换为阿里云源

echo "# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
" > /etc/apt/sources.list

注意:

echo "aghrag"  > a.txt 覆写 
echo "aghrag" >> b.txt 末尾追加

Step3. 执行更新

apt-get update   
apt-get upgrade

9、启动的Container中安装 vim,open-ssh,ifconfig

apt-get install vim
apt-get install openssh-server
apt install net-tools

10、启动的Container中安装ssh服务

vim /etc/ssh/sshd_config :

PermitRootLogin yes  #将PermitRootLogin的值从withoutPassword改为yes
UsePAM no

同时生成ssh 密钥

>ssh-keygen -t rsa 
>连续回车

在/root/.ssh目录下生成id_rsa和 id_rsa.pub文件
>cd /root/.ssh
>cat id_rsa.pub >> authorized_keys

至此不会出现 root@localhost:password:输入的提示了。

ssh 相关命令:

service ssh status # 查看ssh服务启动情况  
service ssh start # 启动ssh服务 
service ssh restart # 重启动ssh服务

11、保存镜像

exit 退出容器后:

docker ps
docker commit 容器id 新命名的容器名:新Tag

PS : 修改镜像名字

docker images
docker tag 镜像id 新镜像名:tag

12、启动容器id,启动ssh

exit 退出容器后:

docker run -ti -p 50001:22 镜像名称:TAG
service ssh start
passwd

PS: -p 将镜像的 22 端口 映射为docker 所在容器的 50001 端口。

13、ssh访问 Or XShell 访问

ssh root@ip -p 50001

2.3 安装大数据生态系统资源

1、 为了再次进入容器时环境变量会失效,解决办法是将环境变量设置在

vim ~/.bashrc

2、 安装各种服务及软件并启动mysql 、Hive、Zeppelin、HDFS、Spark等

service mysql start

3、 commit容器

 docker commit 容器id 新命名的容器名:新Tag

4、 export 容器id Or save 镜像id

  docker save -o /usr/local/docker/lgv2.tar lg:v2

5、加载

 docker load < /usr/local/docker/lgv2.tar

6、实现停用并删除所有容器

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

7、 一般将常用的端口映射出来

docker run -d -P -p 50009:22 -p 50079:50070 -p 8089:8080 -p 18089:18080 lg:v2 /bin/bash -c 'service ssh start  && tail -f /dev/null'

注意:希望启动时ssh 服务也启动,最后使用 tail -f /dev/null 可以使容器避免自动退出。