Estoy configurando dos contenedores docker: uno como servidor para almacenar datos en la memoria y el otro como cliente para acceder a esos datos. Para hacerlo, creo que necesito usar el indicador --ipc para compartir memoria entre los contenedores. La documentación de Docker explica bastante bien el indicador --ipc . Lo que tiene sentido para mí según la documentación se está ejecutando:
docker run -d --ipc=shareable data-server docker run -d --ipc=container:data-server data-clientPero todas las preguntas de Stackoverflow que he leído ( 1 , 2 , 3 , 4 ) vinculan ambos contenedores directamente al host:
docker run -d --ipc=host data-server docker run -d --ipc=host data-client ¿Cuál es más apropiado para este caso de uso? Si ipc=host es mejor, ¿cuándo usaría ipc=shareable ?
Del documento :
--ipc="MODE" : establece el modo IPC para el contenedor
"compartible": propio espacio de nombres IPC privado, con la posibilidad de compartirlo con otros contenedores.
"host": utilice el espacio de nombres IPC del sistema host.
La diferencia entre shareable y host es si el host puede acceder a la memoria compartida.
Teniendo en cuenta la seguridad del servicio, el uso de host expone el espacio de nombres de IPC a los atacantes que tienen el control de la máquina host. Con shareable , solo se puede acceder al espacio de nombres de IPC dentro de los contenedores, que pueden contener ataques. El modo host existe para permitir la cooperación entre un contenedor y su anfitrión.
A menudo es difícil conocer todos los detalles del entorno y los requisitos del autor de la pregunta, por lo que el host tiende a ser el más recomendado porque es más fácil de entender y configurar.