Scenario 1:
Legare il demone docker a 0.0.0.0:2375 è una pessima idea. Un utente malintenzionato può ottenere l'accesso di root sul computer host accedendo alla finestra mobile. Passare alla radice è molto più difficile in questi giorni, ma piuttosto sicuro che dispiaciuto. Altre informazioni qui
Il collegamento a tutte le interfacce consente a un utente malintenzionato di connettersi al demone docker da una macchina remota. Quindi possono
EXPORT DOCKER_HOST=tcp://YOURIP:2376
docker ps
docker stop
Soluzione:
L'aggiunta del tuo utente al gruppo docker è una soluzione molto migliore per proteggerti.
Scenario 2:
Associazione a localhost: 2375 non consente al browser di accedere alla porta.
Come riportato qui: link , questo potrebbe essere possibile Finestre.
Dal link:
"L'attacco è a più fasi. Primo passaggio, coinvolge lo sviluppatore che esegue Docker per Windows in una pagina Web controllata dagli aggressori che ospita un JavaScript appositamente predisposto. Tra le altre cose, il JavaScript è in grado di bypassare la sicurezza di Same Origin Policy del browser, una protezione dei dati funzionalità disponibile sui browser moderni. "
Nei miei test, questo è possibile:
curl http://localhost:2375/info
Questo non è:
<!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>
Il browser restituisce:
Richiesta di origine incrociata bloccata: la stessa politica di origine non consente di leggere la risorsa remota al link . (Motivo: manca l'intestazione CORS 'Access-Control-Allow-Origin').
Accesso al daemon docker da Java
Suppongo che tu voglia eseguire docker come utente non root in un plugin Maven o Gradle come docker-maven-plugin . Il modo migliore per farlo è aggiungere l'utente al gruppo docker e quindi non è necessario collegarsi alla porta TCP.