gpt4 book ai didi

azure - 将 Azure 容器服务与卷映射结合使用

转载 作者:行者123 更新时间:2023-12-02 18:23:38 25 4
gpt4 key购买 nike

我使用 Azure 容器服务将 Docker 化应用程序部署到 azure。它是一个使用 MongoDB 的 NodeJS/Express 应用程序。一切工作正常,但现在我想做的是在我的内部项目文件夹之一和虚拟机上的文件夹之间设置卷映射。

这在常规 Docker 中工作得很好,我只需在启动容器时运行以下命令:

docker run -d --net=784849494 -p 5555:80 -v /www/uploads:/var/www/myapp/uploads myapp

基本上,我在虚拟机的 www 中创建了一个上传文件夹,它映射到我的项目文件夹上传。

这是我感到困惑的部分,当我在我的虚拟机中创建 azure 为我创建的文件夹(可通过

访问)时,这是我感到困惑的部分
user@myazureapp -p 2200 -L 22375:12.0.0.1:2375 -i mykey

这不起作用。我猜测需要在与容器服务集成的另一个虚拟机中创建该文件夹。但我不确定它在哪里,也找不到它。

最佳答案

简短版本:

您不想在虚拟机文件夹上使用,您需要某种网络驱动器来存储数据。也许使用 MongoDB 服务或将 MongoDB 文件存储在可以保证数据访问的存储帐户中。例如,要执行后者,您可以使用适用于 Docker 的 Azure 文件卷驱动程序(请参阅 https://azure.microsoft.com/en-us/blog/persistent-docker-volumes-with-azure-file-storage/ )

更长的版本:

您要在其上创建文件夹的计算机是主计算机。它不是容器部署的地方,而是 Docker Swarm master 所在的位置。这就是为什么你看不到它。您需要在代理上创建文件夹。

但是,您不知道 Swarm 将在集群中的何处部署您的容器,因此无法保证它将放置在您的文件夹所在的虚拟机上。即使您很幸运并且第一次部署时您登陆了正确的虚拟机,也不能保证在 Docker 需要重新启动时它将在同一个虚拟机上重新启动。

您可以在每个代理上创建一个文件夹,但在容器重新启动的情况下,您无法保证它在同一虚拟机上重新启动,因此您的容器将无法访问相同的数据。即使您确实登陆了同一个虚拟机,您可能仍然会遇到麻烦,因为如果您的虚拟机重新启动(可能是为了由 Azure 修复服务),则无法保证虚拟机磁盘仍然存在。 VM 磁盘是短暂的,我假设您不希望这些数据消失。

在许多情况下,最好的选择是使用数据服务,而不是在集群中运行它,例如https://learn.microsoft.com/en-us/azure/documentdb/documentdb-protocol-mongodb 。这意味着其他人负责备份、可用性、可扩展性、性能等。这确实意味着您要为服务付费,但当您考虑到管理自己的服务的成本时,它通常会更便宜 - 并且您需要更小的服务ACS集群。

如果您确实想托管自己的 MongoDB 实例,那么您可以考虑使用卷驱动程序,以确保您的 MongoDB 容器始终可以访问网络存储位置,无论部署在何处。例如,您可以使用适用于 Docker 的 Azure 文件卷驱动程序(请参阅 https://azure.microsoft.com/en-us/blog/persistent-docker-volumes-with-azure-file-storage/)。

关于azure - 将 Azure 容器服务与卷映射结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com