我正在设置两个docker容器-一个作为用于将数据保存在内存中的服务器,另一个作为用于访问该数据的客户端。为此,我相信我需要使用--ipc
标志在容器之间共享内存。 Docker documentation很好地解释了--ipc
标志。根据文档的运行,对我来说有意义的是:
docker run -d --ipc=shareable data-server
docker run -d --ipc=container:data-server data-client
但是我读过的所有Stackoverflow问题(1,2,3,4)都将两个容器直接链接到主机:
docker run -d --ipc=host data-server
docker run -d --ipc=host data-client
哪个更适合此用例?如果
ipc=host
更好,什么时候使用ipc=shareable
? 最佳答案
从doc:
shareable
和host
之间的区别在于主机是否可以访问共享内存。
考虑到服务的安全,使用
host
可将IPC namespace 公开给控制主机的攻击者。使用shareable
,只能在容器内部访问IPC namespace ,其中可能包含任何攻击。存在host
模式以允许容器与其主机之间进行协作。通常很难知道询问者的环境和要求的所有细节,因此
host
往往是最常用的建议,因为它最容易理解和配置。关于docker - 在Docker容器之间共享内存: '--ipc=host'与 '--ipc=shareable',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56878405/