码头工人卷是否必须托管在主机上?

时间:2020-05-30 17:39:34

标签: docker

我已经使用Docker Desktop来运行Laravel网站,并且已经成功。我不确定该如何在生产环境中工作。

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

我目前已与OVH签约,并且对DigitalOcean有所了解。我想,主机与主机无关,除非他们甚至不提供运行docker设置的基本需求。

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

此外,是否必须始终将卷托管在Docker容器上?我想我期望的是托管服务提供商删除了许多设置,并让他们在管理基础结构并向您收取使用资源的费用时创建网络,卷,容器。我认为我无法增加实例本身的存储大小,在我使用的软件包上它已被锁定为20G,但是我可以增加存储量。使用托管服务提供商的卷的好处是否在于可以根据需要增加它?

  • 是否必须始终将卷托管在docker容器上?
  • 我是否正确理解托管服务提供商的卷与Docker使用的卷无关?
  • 我可以适当地使用docker吗?即我是否在做超出常规的事情而应该做不同的事情?

1 个答案:

答案 0 :(得分:1)

Docker volumes 是特定于Docker的构造,正如您正在做的那样,用于表示容器(!)使用的(文件)存储。卷与bind-mounts类似,但不同。

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

Docker卷被不可分割地(!)绑定到创建它们的主机。与可能会在注册表之间移入或移出注册表的容器映像不同,卷无法脱离其创建主机。

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

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

例如即使您能够docker pull数据库容器映像,也必须复制数据库卷,即您为本地主机创建卷的过程,以便在要访问它的远程主机上创建该卷。 / p>

回答您的问题(据我了解):

  • 必须在将运行依赖于卷的容器的任何Docker引擎(!)主机上创建卷;
  • 正确:卷的概念广泛适用,但是,云提供商的卷的概念很可能是指VM可以使用的某些块(文件)存储(不直接是容器);
  • 您的方法似乎非常好。如果您不使用Docker Compose,则这可能有助于将容器和卷作为一个单元来对待(但Compose不会帮助在主机之间移动解决方案);

您将无法使用它,但作为示例,Kubernetes是Docker的流行补充技术,其中包括称为Persistent Volumes的功能,该功能提供的功能与您所寻找的功能相似。