我已经使用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,但是我可以增加存储量。使用托管服务提供商的卷的好处是否在于可以根据需要增加它?
答案 0 :(得分:1)
Docker volumes 是特定于Docker的构造,正如您正在做的那样,用于表示容器(!)使用的(文件)存储。卷与bind-mounts类似,但不同。
Docker卷是容器可用文件的分发单位(仅)。卷的概念经常出现,通常指的是块(文件)存储,通常用于指代VM使用的“磁盘”。这些概念虽然相似,但不可转让(VMs <->容器)。
Docker卷被不可分割地(!)绑定到创建它们的主机。与可能会在注册表之间移入或移出注册表的容器映像不同,卷无法脱离其创建主机。
在将Docker(Compose?)解决方案部署到任何其他主机(包括云提供商(如Digital Ocean)上的主机)时,必须在任何这些远程主机上重新创建所需的卷。
我不知道有什么机制可以根据需要促进在机器之间移动卷,但是想要此功能是完全合理的。
例如即使您能够docker pull
数据库容器映像,也必须复制数据库卷,即您为本地主机创建卷的过程,以便在要访问它的远程主机上创建该卷。 / p>
回答您的问题(据我了解):
您将无法使用它,但作为示例,Kubernetes是Docker的流行补充技术,其中包括称为Persistent Volumes的功能,该功能提供的功能与您所寻找的功能相似。