多服务器上的 docker 实现互相访问

场景:

  • Server_1上有一个docker容器 containerX
  • Server_2上有一个docker容器 containerX
  • ...
  • Server_n上有一个docker容器 containerX

如何实现着 n 个docker之间的互相访问呢?

实现方式:

Step1:配置一个通用的容器

新建一个容器,在容器中做以下配置:

  • 确保已经安装,如果没有安装,则: sshsudo apt-get install openssh-server
  • 确保 ssh 开机启动,.bashrc 中添加 service ssh start。执行 source .bashrc
  • sshd配置(用于接受其它容器的链接):
shell 复制代码
$ vim /etc/ssh/sshd_config    # 修改 ssh 守护配置
	<<LongComment
  		###需要在文件末尾添加以下内容
  		port=2478  ##这个端口号不要跟本服务器其它Docker容器端口号重复!
  		PermitRootLogin yes 
  		PubkeyAuthentication yes 
  		PasswordAuthentication yes 
	LongComment
  • ssh配置(用于链接其它容器)
shell 复制代码
$ vim /etc/ssh/ssh_config 
	<<LongComment
  		###需要在文件末尾添加以下内容
  		port=2478  ##将端口号修改为想要连接的服务器容器端口号
	LongComment
  • 设置ssh公钥,免密登录 $ ssh-keygen -t rsa -C "multi-node"
    将生成的公钥内容 ~/.ssh/id_rsa.pub拷贝到 ~/.ssh/authorized_keys
Step2:将这个通用的容器(设为cont_g)导出为 tar 文件,拷贝到所有n个server上

docker export cont_g > cont_g.tar

Step3:将cont_g.tar导入为 image

docker import cont_g.tar container:generel

Step4:在所有的server上从image构建各自的容器

Server_1:Server_n 上的操作相同:
docker run -it --name containerX--network=host --ipc=host --privileged container:generel /bin/bash

最后,通过 ssh Server_x(x∈1,n)就可以实现n个容器之间的互相访问了

相关推荐
上海云盾第一敬业销售1 小时前
服务器遭受攻击的应对策略及快速防护实践
运维·服务器·web安全·ddos
剑神一笑6 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux·运维·chrome
Lumbrologist6 小时前
【零基础部署】Docker 部署 CrewAI 多 Agent 编排框架保姆级教程
运维·docker·容器
yyuuuzz6 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
剑神一笑6 小时前
Linux killall 命令详解:按进程名批量终止进程的原理与实践
linux·运维·chrome
雅菲奥朗7 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw
江华森8 小时前
Ansible 自动化运维:从入门到实战
运维·自动化·ansible
宋浮檀s10 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
日取其半万世不竭11 小时前
iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
linux·运维·服务器
mounter62511 小时前
Linux 内核资源管理:控制组(cgroup)的演进与“策略组”新提案
linux·运维·服务器·cgroup·kernel