文章482
标签257
分类63

Docker下安装与配置CentOS

最近开始学习分布式大数据相关的一些内容. 一般情况下都是使用VMWare这种虚拟机.但是实际上Docker已经这么轻量级, 完全没有必要使用VMWare这种带有图形界面的软件了.

所以就简单折腾了一下, 配置安装了CentOS.


Docker下安装与配置CentOS

我打算采用的是CentOS 6.9(虽然现在CentOS8都已经发行了. 但是视频教程还是用的6.x, 所以勉为其难用了6.x);

下载镜像

docker pull centos:6.9

创建网络

这一步其实比较容易忽略, 但是单独创建一个网络更加方便管理.

同时也避免了容器之间可能无法正常通信等各种问题.

docker network create --subnet=172.18.1.0/16 hadoop_network

我创建的是172.18.1.x网段, 并命名为hadoop_network

你可以按照自己的喜好来设置;

但是不要选用172.17.0.x网段. 因为这个是docker的默认网段;


创建容器并启动

使用docker run命令创建并启动一个容器

docker run -it \
    --name hadoop1 \
    --net hadoop_network \
    --ip 172.18.0.1 \
    centos:6.9 /bin/bash

上面的命令的一些解释:

  • --name: 指定创建的容器名称(方便下一次直接通过容器名称启动)
  • --net: 指定容器的网络, 如果不指定类型则默认为bridge模式(NAT方式)
  • --ip: 指定容器的固定ip(如果不指定, 则Docker会按照容器的启动顺序分配, 有可能造成每次的ip都不同)

更多关于Docker网络:

docker 之网络配置


设置yum镜像源

配置阿里云的镜像源, 在容器中执行下面的命令:

curl http://mirrors.aliyun.com/repo/Centos-6.repo > /etc/yum.repos.d/CentOS-Base-6-aliyun.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
yum makecache

注意:

其中的Centos-6.repo是对应CentOS6版本的, 其他的也可以在阿里云上查找:

阿里云官方镜像站


安装ssh

yum install -y openssh-clients openssh-server

注意:

刚开始进入到docker中的centos6时,是没有service这个命令的,而当安装 openssh 时,里面会依赖到 initscripts 软件包,这个将自动进行安装,安装后就有 service 命令可以使用了

启动ssh

# chkconfig sshd on
# service sshd start
Generating SSH2 RSA host key:                              [  OK  ]
Generating SSH1 RSA host key:                              [  OK  ]
Generating SSH2 DSA host key:                              [  OK  ]
Starting sshd:                                             [  OK  ]

注意:

在docker的centos6中,启动ssh时,会自动创建ssh的rsa、dsa密钥;

如果是在docker中的centos7刚开始启动ssh时,则需要创建相应的密钥,否则会报相关的密钥不存在

# 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连接过来都会出现:

# ssh localhost
root@localhost's password: 
Connection to localhost closed.

修改ssh的配置文件:

vi /etc/ssh/sshd_config

将第97行的UsePAM yes,改为 UsePAM no

保存退出,重启ssh

[root@14c0ec213102 /]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

现在就能正常使用ssh连接访问了

[root@14c0ec213102 /]# ssh localhost
root@localhost's password: 
Last login: Sun Jun  4 15:50:46 2017 from 172.17.42.1

说明:

将UsePAM设置为no,主要是禁止PAM验证:

usePam为非对称密钥认证 UsePam,如果是yes的话非对称密钥验证失败,仍然可用口令登录


关闭防火墙

在某些CentOS镜像中开启了防火墙, 在学习是我们是不需要的

临时关闭防火墙

service iptables stop

开机禁用

chkconfig iptabls off

查看开机启动的服务chkconfig

  [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:off

0-6是Linux的模式:

一般3是命令行模式, 5是图形模式

修改selinux配置

在Docker镜像中并不一定存在此文件

vi /etc/selinux/config
# 将SELINUX=enforcing修改为disabled

修改hoshname

修改/etc/sysconfig/network文件

vi /etc/sysconfig/network

# 将HOSTNAME修改为你集群中的hostname
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=node1

修改hosts

修改/etc/hosts, 加入集群的信息, 如加入:

172.18.1.1 node1
172.18.1.2 node2
172.18.1.3 node3
172.18.1.4 node4


本文作者:Jasonkay
本文链接:https://jasonkayzk.github.io/2020/04/05/Docker下安装与配置CentOS/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可