Anonimo
Accesso non effettuato
discussioni
Modalità scura
contributi
registrati
entra
ElettraWiki
Ricerca
Modifica di
Passare comandi mysql in un container MariaDB
Da ElettraWiki.
Namespace
Pagina
Discussione
Altro
Altro
Azioni sulla pagina
Leggi
Modifica
Modifica sorgente
Cronologia
Attenzione:
non hai effettuato l'accesso. Se effettuerai delle modifiche il tuo indirizzo IP sarà visibile pubblicamente. Se
accedi
o
crei un'utenza
, le tue modifiche saranno attribuite al tuo nome utente, insieme ad altri benefici.
Controllo anti-spam.
NON
riempirlo!
[[Category:Informatica]] [[Category:Amminstrazione Server]] [[Category:sysadmin]] [[Category:Linux]] [[Category:Bash]] [[Category:Docker]] [[Category:Database]] ==Introduzione== Può capitare di dover impartire comandi con un client '''<code>mysql</code>''' per ottenere output o magari per un dump o un restore di un DB all'interno di un container che fornisce servizio DB tramite server '''MariaDB''', sprovvisto di funzioni client. ==Scenario== * Container A (MariaDB) * Container B (Applicazione) I due container parlano tra di loro tramite la rete di Docker per cui A non ha bisogno di esporre alcuna porta di comunicazione, saremo costretti a trovare un'altra strada per parlare con il container A nel quale gira MariaDB. ==Workaround== La soluzione più pulita è utilizzare un container MariaDB solo come client, usare il network condiviso, e lanciare il comando direttamente. Docker Compose crea un network predefinito (di solito nomecontainer_default), dentro quel network i container si vedono col service name (reperipile dal file docker-compose.yml). Si può verificare il nome della rete con: '''<code>docker network ls</code>''' <div id="atscreen"> skid@server:~$ docker network ls<br> NETWORK ID NAME DRIVER SCOPE<br> 864d33d040d4 bridge bridge local<br> 0a9ae01920f8 AAAA_default bridge local<br> 2f692e7703a0 BBBB_default bridge local<br> 122a725b96cf host host local<br> 914723dd5823 RETE_default bridge local<br> a6638e80949f CCCC_default bridge local<br> 3511c1079a34 DDDD_default bridge local<br> skid@server:~$ </div> Tra le varie reti listate sappiamo che la rete che ci interessa risulta essere (solo esemplificativamente) '''RETE_default''' Assumendo che siamo posizionati nella stessa directory del docker-compose.yml possiamo utilizzare la seguente procedura: <div id="atscreen"> skid@server:~$docker run -it --rm --network=RETE_default mariadb:10.6 \<br> mysql -h db -u user_db -ppassword -e "SHOW DATABASES;" </div> Dove: * '''Docker run -i --rm''' → avvia un container temporaneo, che poi si autodistrugge. * '''--network=RETE_default''' → fa usare al nuovo container la stessa rete del container con il quale dobbiamo interagire, quindi parla con MariaDB via socket TCP interno. * '''mariadb:10.6''' → scarica ed esegue l’immagine ufficiale MariaDB 10.6 (compatibile con il DB in uso). * '''mysql -h db -u user_db -ppassword -e "SHOW DATABASES;"''' → esegue la connessione al db sull'host '''db''' (nome del servizio reperito dal docker-compose.yml) utilizzando l'user user_db ('''-u user_db''', reperibile anche questo nel file docker-compose.yml) e la password password (-ppassword sempre dal file docker-compose.yml) ed esegue il comando SQL '''"SHOW DATABASES;"'''
Oggetto:
Per favore tieni presente che tutti i contributi a ElettraWiki possono essere modificati, stravolti o cancellati da altri contributori. Se non vuoi che i tuoi testi possano essere alterati, allora non inserirli.
Inviando il testo dichiari inoltre, sotto tua responsabilità, che è stato scritto da te personalmente oppure è stato copiato da una fonte di pubblico dominio o similarmente libera (vedi
ElettraWiki:Copyright
per maggiori dettagli).
Non inviare materiale protetto da copyright senza autorizzazione!
Annulla
Guida
(si apre in una nuova finestra)
Navigazione
Navigazione
Pagina principale
Ultime modifiche
Una pagina a caso
Aiuto su MediaWiki
Pagine speciali
Strumenti wiki
Strumenti wiki
Strumenti pagine
Strumenti pagine
Strumenti pagina utente
Altro
Puntano qui
Modifiche correlate
Informazioni pagina
Registri della pagina