最近开始学习分布式大数据相关的一些内容. 一般情况下都是使用VMWare这种虚拟机.但是实际上Docker已经这么轻量级, 完全没有必要使用VMWare这种带有图形界面的软件了.
所以就简单折腾了一下, 配置安装了CentOS.
Docker下安装与配置CentOS
我打算采用的是CentOS 6.9(虽然现在CentOS8都已经发行了. 但是视频教程还是用的6.x, 所以勉为其难用了6.x);
下载镜像
1 | docker pull centos:6.9 |
创建网络
这一步其实比较容易忽略, 但是单独创建一个网络更加方便管理.
同时也避免了容器之间可能无法正常通信等各种问题.
1 | docker network create --subnet=172.18.1.0/16 hadoop_network |
我创建的是172.18.1.x网段, 并命名为hadoop_network
你可以按照自己的喜好来设置;
但是不要选用172.17.0.x网段. 因为这个是docker的默认网段;
创建容器并启动
使用docker run命令创建并启动一个容器
1 | docker run -it \ |
上面的命令的一些解释:
--name: 指定创建的容器名称(方便下一次直接通过容器名称启动)--net: 指定容器的网络, 如果不指定类型则默认为bridge模式(NAT方式)--ip: 指定容器的固定ip(如果不指定, 则Docker会按照容器的启动顺序分配, 有可能造成每次的ip都不同)
更多关于Docker网络:
设置yum镜像源
配置阿里云的镜像源, 在容器中执行下面的命令:
1 | curl http://mirrors.aliyun.com/repo/Centos-6.repo > /etc/yum.repos.d/CentOS-Base-6-aliyun.repo |
注意:
其中的
Centos-6.repo是对应CentOS6版本的, 其他的也可以在阿里云上查找:
安装ssh
1 | yum install -y openssh-clients openssh-server |
注意:
刚开始进入到docker中的centos6时,是没有service这个命令的,而当安装 openssh 时,里面会依赖到 initscripts 软件包,这个将自动进行安装,安装后就有 service 命令可以使用了
启动ssh
1 | # chkconfig sshd on |
注意:
在docker的centos6中,启动ssh时,会自动创建ssh的rsa、dsa密钥;
如果是在docker中的centos7刚开始启动ssh时,则需要创建相应的密钥,否则会报相关的密钥不存在
1
2
3
4 ># docker 中首次启动 centos 7 的 ssh
>ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
>ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
>ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
修改ssh配置
启动好ssh后,还要修改一下配置,否则会连接后自动关闭,连接本机或另的机器ssh连接过来都会出现:
1 | # ssh localhost |
修改ssh的配置文件:
1 | vi /etc/ssh/sshd_config |
将第97行的UsePAM yes,改为 UsePAM no
保存退出,重启ssh
1 | [root@14c0ec213102 /]# service sshd restart |
现在就能正常使用ssh连接访问了
1 | [root@14c0ec213102 /]# ssh localhost |
说明:
将UsePAM设置为no,主要是禁止PAM验证:
usePam为非对称密钥认证 UsePam,如果是yes的话非对称密钥验证失败,仍然可用口令登录
关闭防火墙
在某些CentOS镜像中开启了防火墙, 在学习是我们是不需要的
临时关闭防火墙
1 | service iptables stop |
开机禁用
1 | chkconfig iptabls off |
查看开机启动的服务
chkconfig
1
2
3
4
5
6
7
8
9 [root@490de829cb74 ~]# chkconfig
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off0-6是Linux的模式:
一般3是命令行模式, 5是图形模式
修改selinux配置
在Docker镜像中并不一定存在此文件
1 | vi /etc/selinux/config |
修改hoshname
修改/etc/sysconfig/network文件
1 | vi /etc/sysconfig/network |
修改hosts
修改/etc/hosts, 加入集群的信息, 如加入:
1 | 172.18.1.1 node1 |