Escenario 1:
Atar a tu demonio docker a 0.0.0.0:2375 es una muy mala idea. Un atacante podría obtener acceso de root en su máquina host accediendo a la ventana acoplable. Caer a la raíz es mucho más difícil en estos días, pero es más seguro que lamentarlo. Un poco más de información aquí
El enlace a todas las interfaces permite que un atacante se conecte a tu demonio docker desde una máquina remota. Así que ellos pueden
EXPORT DOCKER_HOST=tcp://YOURIP:2376
docker ps
docker stop
Solución:
Agregar a su usuario al grupo docker es una solución mucho mejor para protegerse.
Escenario 2:
Enlace a localhost: 2375 no permite que su navegador acceda al puerto.
Como se informa aquí: enlace , esto puede ser posible en Windows
Desde el enlace:
"El ataque es multietapa. El primer paso, consiste en atraer al desarrollador que ejecuta Docker para Windows a una página web controlada por un atacante que aloja un JavaScript especialmente diseñado. Entre otras cosas, el JavaScript puede omitir la seguridad de la Política del mismo origen de un navegador, una protección de datos. característica encontrada en los navegadores modernos ".
En mis pruebas, esto es posible:
curl http://localhost:2375/info
Esto no es:
<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Click me to get docker info</button>
<p id="result"></p>
<script>
function myFunction() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", 'http://127.0.0.1:2375/info', false ); // false for synchronous request
xmlHttp.send( null );
document.getElementById("result").innerHTML = "It did not work";
document.getElementById("result").innerHTML = xmlHttp.responseText;
}
</script>
</body>
</html>
El navegador devuelve:
Solicitud de origen cruzado bloqueada: la misma política de origen no permite leer el recurso remoto en enlace . (Motivo: falta el encabezado CORS ‘Access-Control-Allow-Origin’).
Accediendo al demonio docker desde Java
Supongo que desea ejecutar la ventana acoplable como un usuario no root en un complemento de Maven o Gradle como docker-maven-plugin . La mejor manera de hacerlo es agregar su usuario al grupo de docker y, a continuación, no necesita enlazar con el puerto TCP.