西班牙
斯潘4
我正在尝试修改可用的docker撰写文件在这里在Docker Swarm上工作,但我最终得到了一个看不到我的引擎的FME服务器核心。我对docker compose文件的修改包括将版本更新为3和删除网络信息。如果我运行带有网络属性的合成文件,我会收到关于它们超出swarm范围的错误。有什么线索吗?
Docker Swarm不喜欢我们定义的网络,因为他们使用“桥”驱动程序。Docker Swarm上的部署应该使用“覆盖”网络驱动程序。覆盖网络允许在你的群中进行跨主机通信。与其删除网络部件,不如将指定“driver:bridge”的所有位置更改为“driver:overlay”。这应该可以让你的堆栈和引擎连接起来。
如果计划跨多个物理主机部署,则需要做更多的工作。由于我们的引擎、核心和web容器都需要访问共享的FME服务器数据,因此它们需要共享docker卷。在compose文件中,我们使用“本地”驱动程序定义docker卷,这意味着它们不会在主机之间共享。我相信swarm会将您的容器安排在同一台主机上,因为它们都需要访问这些共享卷。
为了正确地跨主机部署,您需要正确地共享数据。不幸的是Docker没有一个可以跨主机工作的内置卷驱动程序。我们发现目前最简单的方法是在某个地方设置一个NFS共享来处理共享数据。如果您是在AWS中部署的,那么使用EFS是最简单的,但是其他情况下,任何NFS服务器都可以工作。然后,您需要将NFS共享装载到将在群中运行的每个主机上的同一位置。例如,可以在物理主机上的/mnt/fmeserverdata中装载相同的NFS共享。然后,您需要修改撰写文件以删除除已定义的“数据库”之外的所有卷。然后在“fmeservercore”、“fmeserverweb”和“fmeserverengine”服务中,定义单个卷,如:
卷:-/mnt/fmeserverdata:/data/fmeserverdata
这将把NFS共享装载到正确位置的容器中,并且它们将在主机之间正确共享,因为它们都将在同一目录中装载相同的共享。
?2019安全亚搏在线软件公司|合法的