iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Docker怎么创建centos容器集群并实现远程登录功能
  • 337
分享到

Docker怎么创建centos容器集群并实现远程登录功能

2023-07-05 17:07:54 337人浏览 泡泡鱼
摘要

这篇“Docker怎么创建Centos容器集群并实现远程登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker怎

这篇“Docker怎么创建Centos容器集群并实现远程登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker怎么创建centos容器集群并实现远程登录功能”文章吧。

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/initzwb@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/initzwb@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_64Failed to set locale, defaulting to C.UTF-8CentOS 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,不能准备内部镜像列表。

问题分析:

✨第一种可能的情况便是网络连接问题。检查是否可以连接外部网络,可以使用 ping baidu.com 查看是否有丢包情况。如果丢包,则进一步检查网络连接是否正常;如果没有丢包,继续阅读下文
✨那么第二种情况,便是 CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。如果需要更新 CentOS,需要将镜像从 mirror.centos.org 更改为 vault.centos.org
那么针对上面提到的第二种情况,给出的解决方法如下:

首先,进入到 yum 的 repos 目录

cd /etc/yum.repos.d/

其次,修改 centos 文件内容

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*sed -i 's|#baseurl=Http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

然后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右)

yum makecache

最后,运行 yum update 并重新安装工具包、ssh网络环境和vim

yum update -yyum -y install net-tools.x86_64yum -y install openssh-serveryum install vim

安装passwd并修改root密码

yum install passwd[root@aa92cb71e3ab yum.repos.d]# passwdChanging passWord for user root.New password: Retype new password: passwd: all authentication tokens updated successfully.

重启docker

 systemctl stop docker systemctl start docker

查看容器

(base) zwb@test-algo:~$ sudo  docker ps -aCONTAINER ID   IMAGE     COMMAND        CREATED          STATUS                        PORTS                                     NAMES2b8fa155e71f   centos    "/sbin/init"   17 minutes ago   Up 9 seconds                  0.0.0.0:50003->22/tcp, :::50003->22/tcp   Node0397041252bf37   centos    "/sbin/init"   17 minutes ago   Up 9 seconds                  0.0.0.0:50002->22/tcp, :::50002->22/tcp   Node02aa92cb71e3ab   centos    "/sbin/init"   17 minutes ago   Up 9 seconds                  0.0.0.0:50001->22/tcp, :::50001->22/tcp   Node01

开放宿主机防火墙

(base) zwb@test-algo:~$ firewall-cmd --add-port=50022/tcp --permanentYou're perfORMing an operation over default zone ('public'),but your connections/interfaces are in zone 'docker' (see --get-active-zones)You most likely need to use --zone=docker option.Authorization failed.    Make sure polkit agent is running or run the application as superuser.(base) zwb@test-algo:~$ sudo firewall-cmd --add-port=50022/tcp --permanentYou're performing an operation over default zone ('public'),but your connections/interfaces are in zone 'docker' (see --get-active-zones)You most likely need to use --zone=docker option.Warning: ALREADY_ENABLED: 50022:tcpsuccess(base) zwb@test-algo:~$ sudo firewall-cmd --reloadsuccess(base) zwb@test-algo:~$ sudo firewall-cmd --list-portYou're performing an operation over default zone ('public'),but your connections/interfaces are in zone 'docker' (see --get-active-zones)You most likely need to use --zone=docker option.50022/tcp

手动启动sshd

(base) zwb@test-algo:~$ sudo /usr/sbin/sshd(base) zwb@test-algo:~$ sudo netstat -antp | grep sshdtcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      929/sshd: /usr/sbin tcp        0     76 172.21.198.185:22       10.3.16.31:53836        ESTABLISHED 127529/sshd: zwb [p tcp        0      0 127.0.0.1:50522         127.0.0.1:38979         ESTABLISHED 127629/sshd: zwb@no tcp        0      0 127.0.0.1:50510         127.0.0.1:38979         ESTABLISHED 127629/sshd: zwb@no tcp        0      0 172.21.198.185:22       10.3.16.31:52932        ESTABLISHED 127260/sshd: zwb [p tcp6       0      0 :::22                   :::*                    LISTEN      929/sshd: /usr/sbin

若发生以下问题

问题

[root@79a70e3D26cd /]# /usr/sbin/sshd  Unable to load host key: /etc/ssh/ssh_host_rsa_keyUnable to load host key: /etc/ssh/ssh_host_ecdsa_keyUnable to load host key: /etc/ssh/ssh_host_ed25519_keysshd: no hosTKEys available -- exiting.[root@79a70e3d26cd /]#

解决方案

执行:

# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""

通过宿主机ip和端口远程连接容器

# 这是在windows上的shell远程连接,可以看到已经通过ssh连接上了node01,aa92cb71e3ab表示的是Node01的docker容器idPS C:\Users\99140> ssh root@172.21.198.185 -p 50001The authenticity of host '[172.21.198.185]:50001 ([172.21.198.185]:50001)' can't be established.ED25519 key fingerprint is SHA256:zqNzugPY6dYmLFlaDGFOfkxOF8QtY/a5mP0DXH7Vxbk.This key is not known by any other namesAre you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '[172.21.198.185]:50001' (ED25519) to the list of known hosts.root@172.21.198.185's password:[root@aa92cb71e3ab ~]#

3. 查看容器中自启项内容

[root@79a70e3d26cd ~]# systemctl list-unit-files|grep enabledautovt@.service                        enabled getty@.service                         enabled kdump.service                          enabled nis-domainname.service                 enabled sshd.service                           enabled remote-fs.target                       enabled dnf-makecache.timer                    enabled [root@62435d2d7fd2 ~]#

容器在创建时通过----restart=always实现自启动 但还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数

docker run --restart=on-failure:10  xxx

最后重启测试一下自启动是否成功

reboot

最后在远程主机上ssh连接三台centos结点并查看其网络ip情况

# Node01PS C:\Users\99140> ssh root@172.21.198.185 -p 50001root@172.21.198.185's password:Last login: Tue Mar 21 11:37:04 2023 from 10.3.16.31[root@aa92cb71e3ab ~]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.18.0.4  netmask 255.255.0.0  broadcast 172.18.255.255        ether 02:42:ac:12:00:04  txqueuelen 0  (Ethernet)        RX packets 46  bytes 5625 (5.4 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 30  bytes 4929 (4.8 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.17.0.4  netmask 255.255.0.0  broadcast 172.17.255.255        ether 02:42:ac:11:00:04  txqueuelen 0  (Ethernet)        RX packets 11  bytes 946 (946.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0        # Node02PS C:\Users\99140> ssh root@172.21.198.185 -p 50002root@172.21.198.185's password:Last login: Tue Mar 21 11:37:16 2023 from 10.3.16.31[root@97041252bf37 ~]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.18.0.3  netmask 255.255.0.0  broadcast 172.18.255.255        ether 02:42:ac:12:00:03  txqueuelen 0  (Ethernet)        RX packets 46  bytes 5625 (5.4 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 29  bytes 4819 (4.7 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)        RX packets 11  bytes 946 (946.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0# Node03PS C:\Users\99140> ssh root@172.21.198.185 -p 50003The authenticity of host '[172.21.198.185]:50003 ([172.21.198.185]:50003)' can't be established.ED25519 key fingerprint is SHA256:JdfhD5YG8cVOheu8diTuPlByz+KKdjYtQW8c6/XL28I.This key is not known by any other namesAre you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '[172.21.198.185]:50003' (ED25519) to the list of known hosts.root@172.21.198.185's password:[root@2b8fa155e71f ~]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.18.0.2  netmask 255.255.0.0  broadcast 172.18.255.255        ether 02:42:ac:12:00:02  txqueuelen 0  (Ethernet)        RX packets 47  bytes 6271 (6.1 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 27  bytes 5135 (5.0 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)        RX packets 11  bytes 946 (946.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        loop  txqueuelen 1000  (Local Loopback)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其他常用工具命令

# 安装ifconfigyum install net-tools# 修改hostnamehostnamectl set-hostname 想要的名字#会报错误:Could not set property: Failed to set static hostname: Device or resource busy,#exit退出重新进入容器即可

以上就是关于“Docker怎么创建centos容器集群并实现远程登录功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Docker怎么创建centos容器集群并实现远程登录功能

本文链接: https://www.lsjlt.com/news/353614.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Docker怎么创建centos容器集群并实现远程登录功能
    这篇“Docker怎么创建centos容器集群并实现远程登录功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker怎...
    99+
    2023-07-05
  • Docker中怎么利用Consul集群实现一个服务发现功能
    本篇文章给大家分享的是有关Docker中怎么利用Consul集群实现一个服务发现功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。服务发现  ...
    99+
    2024-04-02
  • IDEA远程管理docker镜像及容器服务怎么实现
    这篇文章主要讲解了“IDEA远程管理docker镜像及容器服务怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“IDEA远程管理docker镜像及容器服务怎么实现”吧!使用命令行的方式管...
    99+
    2023-06-30
  • 怎么使用Spring MVC拦截器实现一个登录功能
    怎么使用Spring MVC拦截器实现一个登录功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HandlerInterceptor接口Spring MVC中的Intercep...
    99+
    2023-05-31
    springmvc
  • Python怎么实现获取网页内容及自动填表单与登录功能
    库import time import ddddocr源码# import threading # 导入threading模块 # from Feishu_SendMsg import * # Identification verifi...
    99+
    2023-05-16
    Python
  • 云服务器远程登录短信提醒怎么设置密码保护功能
    首先,需要开启短信提醒功能。可以在手机设置中找到“应用程序管理”选项,或者在应用商店中搜索该应用程序并下载安装; 点击“设定”按钮,进入设定界面,再点击“账户与安全”选项; 找到“短信验证”选项,输入需要的密码,并点击“确定”; 此时系统...
    99+
    2023-10-27
    保护功能 密码 短信
  • Android开发中使用PHP服务器怎么实现一个登录功能
    Android开发中使用PHP服务器怎么实现一个登录功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Android客户端和PHP、MySQL搭建的服务器之间的简单交互,实...
    99+
    2023-05-31
    android php roi
  • Linux中怎么使用expect脚本实现远程机器自动登录
    本篇内容介绍了“Linux中怎么使用expect脚本实现远程机器自动登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先创建一个expec...
    99+
    2023-06-09
  • 怎么在 Idea中连接远程服务器实现远程上传部署功能
    这期内容当中小编将会给大家带来有关怎么在 Idea中连接远程服务器实现远程上传部署功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、Tools->Deployment->Configura...
    99+
    2023-06-15
  • 怎么使用云服务器实现内网穿透功能设置密码登录
    1. 什么是内网穿透 内网穿透是一种将内网中的服务暴露到公网上的技术,使得公网用户可以通过互联网访问内网中的服务。这种技术通常用于远程访问内网中的服务器、监控设备等。 2. 使用云服务器实现内网穿透 使用云服务器实现内网穿透需要以下步骤:...
    99+
    2023-10-26
    内网 密码 功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作