目录
Docker 创建centos容器集群并实现远程登录
0.拉取Docker镜像(Centos7官方版)
拉取官方镜像(这个镜像里面几乎什么都没有,很多依赖库需要自己配置,实实在在的“纯净版”。关注我,下期教你用ISO镜像文件使用dockerfile制作究极完整版docker镜像)
docker pull centos:centos7
1.搭建网桥加入网络
创建docker bridge网桥
搭建网桥可以方便管理结点,并且让结点同时位于同一个网段下
sudo docker network create NodeNetWork
创建三个不同端口的结点容器
zwb@test-algo:~$ sudo docker run -itd --restart=always --hostname node01 --name Node01 -p 50001:22 -v /data/sda/sharedata:/share --network NodeNetWork --privileged=true centos:centos7 /sbin/init zwb@test-algo:~$ sudo docker run -itd --restart=always --hostname node02 --name Node02 -p 50002:22 -v /data/sda/sharedata:/share --network NodeNetWork --privileged=true centos:centos7 /sbin/init zwb@test-algo:~$ sudo docker run -itd --restart=always --hostname node03 --name Node03 -p 50003:22 -v /data/sda/sharedata:/share --network NodeNetWork --privileged=true centos:centos7 /sbin/init # 参数解释: # -itd # 选项 选项简写 说明 # –detach -d 在后台运行容器,并且打印容器id。 # –interactive -i 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。 # –tty -t 分配一个伪tty,一般与 -i 连用。 # --restart=always 机器启动时自启动 # --hostname 初始化的hostname # -p 50001:22 端口映射 宿主机端口:容器端口这里为22表示容器内ssh端口 # --privileged=true 通过特权模式进入docker,不仅可以使用systemctl命令(centos 7系统),还可以开启ssh服务 # --network NodeNetWork 将容器结点加入网桥中 # 注意:在 Linux Docker中无法使用 systemd(systemctl) 相关命令的原因是 1号进程不是 init ,而是其他例如 /bin/bash ,所以导致缺少相关文件无法运行。(System has not been booted with systemd as init system (PID 1). Can't operat #解决方案:/sbin/init并且--privilaged=true一定要加上
2.配置机器网络环境并加入ssh
以Node01为例子,进入结点容器并配置网络环境并加入ssh
(base) zwb@test-algo:~$ sudo docker exec -it Node01 /bin/bash [root@aa92cb71e3ab /]# yum -y install net-tools.x86_64 Failed to set locale, defaulting to C.UTF-8 CentOS Linux 8 - AppStream 26 B/s | 38 B 00:01 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
可以看到我们在安装网络工具包的时候出错了,上面的报错信息意思是,从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表。