docker卷是否必须托管在主机上?

docker卷是否必须托管在主机上?,docker,Docker,我已经使用Docker桌面运行了一个Laravel站点,并且非常成功。我不确定的是在生产环境中应该如何工作 我选择使用两个现有图像:redis:4.0-alpine和mariadb:10.4.11。我制作的另外两个图像:recognizerhd/nginx remote log:latest和recognizerhd/php fpm:latest。所有容器都连接到同一网络。有两个卷,一个用于数据库,另一个用于装入nginx和PHP容器的Laravel文件 我目前与OVH签约,我对数字海洋有点了解

我已经使用Docker桌面运行了一个Laravel站点,并且非常成功。我不确定的是在生产环境中应该如何工作

我选择使用两个现有图像:redis:4.0-alpine和mariadb:10.4.11。我制作的另外两个图像:recognizerhd/nginx remote log:latest和recognizerhd/php fpm:latest。所有容器都连接到同一网络。有两个卷,一个用于数据库,另一个用于装入nginx和PHP容器的Laravel文件

我目前与OVH签约,我对数字海洋有点了解。我想,主机基本上是不相关的,除非它们甚至不提供运行docker设置的基本需求

我已经创建了一个实例并添加了一个卷。我必须在实例上装载该卷才能访问它。我是否正确地理解了这只是服务器级别,这里的卷与Docker使用的卷无关

此外,卷是否始终必须托管在docker容器上?我想我所期待的是,托管提供商删除了很多设置,让您在管理基础设施和为您使用的资源付费的同时创建网络、卷和容器。我不认为我可以增加实例本身的存储大小,在我使用的软件包中,它被锁定为20G,但我可以增加容量。这是使用托管提供商的卷的好处吗?它可以根据需要增加吗

  • 卷是否始终必须托管在docker容器上
  • 我是否正确理解托管提供商的卷与Docker使用的卷无关
  • 我使用docker是否恰当?i、 e.我是否做了一些超出规范的事情,而我应该做的是不同的
Docker是一种特定于Docker的构造,在您执行此操作时,它用于表示容器(!)使用的(文件)存储。卷与相似,但不同

Docker卷是容器(仅)可用的文件的分发单元。卷的概念经常出现,通常指块(文件)存储,通常用于指VM使用的“磁盘”。这些概念虽然相似,但不可转移(VMS容器)

Docker卷不可分割地(!)绑定到创建它们的主机。与容器映像不同的是,容器映像可以推送到注册表或从注册表中取出,以便在计算机之间移动它们,卷无法脱离其创建主机

将Docker(Compose?)解决方案部署到任何其他主机(包括Digital Ocean等云提供商上的主机)时,必须在任何远程主机上重新创建所需的卷

我不知道有什么机制可以根据需要在机器之间移动卷,但是想要这个功能是完全合理的

对于您的数据库卷,必须复制您为本地主机创建该卷的过程,以便在远程主机上创建您希望访问的卷,即使您能够
docker pull
数据库容器映像

回答您的问题(据我所知):

  • 必须在任何Docker Engine(!)主机上创建卷,其中容器将根据卷运行
  • 正确:卷的概念是广泛适用的,但云提供商的卷概念可能指的是VMs可用的某些块(文件)存储(而不是容器)
  • 你的方法似乎很好。如果不使用Docker Compose,这可能有助于将容器和卷作为一个单元来处理(但Compose无助于在主机之间移动解决方案)

您无法使用此功能,但举例来说,Kubernetes是Docker的一种流行补充技术,它包含一个名为的功能,该功能提供与您所寻求的功能类似的功能

很高兴知道我的方法听起来不错。在我的研究过程中,我开发了一个composer文件,附带了手动docker运行命令,这样我就可以知道它们在做什么。直接绑定到主机的卷(来自Kubernetes的持久卷)显然清除了一些问题。谢谢