从远程服务器pipe理多台主机上的docker容器

我正在为networking课程中的许多实验课程创build一个教室环境。 我正在考虑一个基于Docker容器的架构,它能够协调远程主机上的容器。 在会议上,我需要

  • 在实验室的计算机中拉出容器
  • 学生们可以联系和做他们的工作,但如果出现问题,我应该能够重置容器
  • 保存容器并回滚到之前状态的能力(docker commit)
  • 容器需要能够相互交谈
  • 需要一定程度的抽象,因为任何学生都应该能够在没有我的帮助的情况下自行启动/停止/重置(我已经编写脚本来做这些事情……所以他们可以通过脚本来运行容器,能够以最less的docker知识甚至其存在来操作)

我可以发出命令,并从我的服务器上复制文件到他们的剧本

我已经分阶段完成了个别任务,但并没有真正把它们放在一起。 虽然我确定它会正常工作,但它有问题。 例如,我可以拉一个容器,但是我无法安装软件包或将文件从我的服务器上复制到主机中的远程容器中? 那可能吗 ?

我已经看到了在哪里实现,你可以使用一个安全的服务器在远程主机上创build容器,主机本身已经安装了它们,并且执行了在其中创build的容器的剧本。 这似乎有点复杂的我。

我想知道是否有一个更有效的方法来协调他们。

由于新的docker群具有networkingfunction。 我想知道是否有可能整合他们来满足我的要求。 据我所知,它从所有可用的主机和设备容器创build一个集群,考虑到它正在一个单一的系统上工作。 所以如果我要部署10个容器,可能会出现一个系统可能有多个容器。 但是有没有办法确保它们落在不同的系统上?在这种情况下,它会很好

Swarm还允许我创build集群,并使在一个系统中创build的容器能够与不同主机中的另一个容器进行通信。 Ansible + Docker不会让我这样做,除非我将docker0的网桥更改为主机的ip子网,所以容器会在这些范围内产生ip地址,从而可以在同一子网中访问其他人。 但说实话,我没有取得什么成功,它得到的IP地址,但不是唯一的,是奇怪的(其中一些产生的说192.168.43.1/24,这是网关地址)。 有没有其他方法让容器与networking中的其他容器进行通信?

过去一周以来,我一直在关注很多video和教程,但很less有解释清楚如何完成的。 如果有人对编排docker集装箱有很好的理解/经验,那么或许指点我一个更好的策略/方向将是非常感谢。