docker - 从多个主机共享 docker 卷?
问题描述
https://nickjanetakis.com/blog/docker-tip-28-named-volumes-vs-path-based-volumes
似乎表明两者named volumes
都path based volumes
存储在 docker 主机中(容器运行的地方)
假设我有web
和nginx
服务。
我以为我可以web
在一台主机和nginx
另一台主机(两台不同的机器)上运行服务。(虽然我刚刚开始学习 docker 的基础知识,而且我还需要很长时间才能将服务分离到不同的主机)
容器有没有办法通过在两者之间共享卷nginx
来提供服务所具有的静态文件?web
解决方案
Docker 还没有内置的基于软件的解决方案来跨多台机器共享卷。有关于infinit的工作,但他们还没有发布任何用于生产用途的东西。
您可以使用第三方存储解决方案。如果您使用的是云提供商,他们的解决方案通常最适合您的用例。对于自托管软件解决方案,您可以使用 glusterfs 之类的东西。自己处理数据复制的应用程序是容器的想法,例如 cockroachdb。
典型的自托管解决方案是依靠 NFS。即使是云提供商,我通常也会使用他们的 NFS 方法来挂载存储。从 docker 来看,这如下所示:
# create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=nfsvers=4,addr=192.168.1.1,rw \
--opt device=:/path/to/dir \
foo
# or from the docker run command
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
foo
# or to create a service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
foo
# or inside a docker-compose file
...
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=192.168.1.1,rw
device: ":/path/to/dir"
...
请注意,只要您保留 nfs 的类型,每个 IP 地址都可以是主机名。
推荐阅读
- python - sqlalchemy 限制从第一次连接返回的结果,并让后续连接只连接有限的结果
- angular - Angular (6/7/8) - 在等待 window.location.assign 中的内容加载时显示微调器
- tensorflow-serving - 如何使模型为带有 base64 编码图像的 TensorFlow Serving REST 接口做好准备?
- java - 使用 JUnit 和 Mockito 对 DAO 类进行单元测试
- reactjs - ReactJS:从 api print 获取不仅仅是一次
- java - 如何等到 JavaRx2 Flowable 完成所有任务?
- c# - 使用 EF Core 枚举属性进行映射
- docker - 无法登录弹性搜索
- angular - Angular 7 Universal 的元标记未及时更新以供爬虫使用
- html - 如何将元素固定在水平可滚动的 div 中