Introduzione
Docker è un'utilità che ti consente di creare un contenitore per l'esecuzione di applicazioni. Un container Docker è una macchina virtuale completamente contenuta.
Questa guida ti mostrerà tre metodi per SSH in un container Docker ed eseguire comandi.
Prerequisiti
- Un sistema Linux che esegue Docker
- Contenitori preconfigurati caricati e in esecuzione
- Accesso a una finestra del terminale/prompt dei comandi (Ctrl +Alt +T o CTRL +Alt +F2 )
- Un account utente con sudo privilegi
Metodo 1:usa docker exec per eseguire comandi in un contenitore Docker
Il docker exec
comando esegue un comando specificato all'interno di un contenitore già in esecuzione. Puoi usarlo per SSH in un container Docker creando una shell bash (una shell in cui puoi digitare comandi).
La sintassi di base per l'utilizzo di docker exec
per eseguire un comando nei contenitori è:
docker exec [options] [container] [command]
Inizia tirando un'immagine Docker se non l'hai già fatto. Ad esempio, puoi caricare Nginx :
sudo docker pull nginx
Quindi, esegui l'immagine:
sudo docker run ––name nginx–test –d nginx
Elenca tutti i contenitori in esecuzione da verificare:
sudo docker ps
Ora dovresti vedere la tua immagine nginx-test caricata.
Per ottenere l'accesso ed eseguire comandi in quel contenitore Docker, digita quanto segue:
sudo docker exec –it nginx-test /bin/bash
Ora hai effettuato l'accesso al nginx-test contenitore. Pertanto, tutti i comandi immessi verranno eseguiti in quel contenitore. Il –i
l'opzione specifica interattivo e il –t
abilita una digitazione terminale interfaccia.
Metodo 2:utilizzare il comando di collegamento Docker per connettersi a un container in esecuzione
Il docker attach
comando collega un flusso di input, output e errore locale a un contenitore. Per impostazione predefinita, si avvia in una bash conchiglia . Per connetterti a un container in esecuzione, inserisci quanto segue:
sudo docker attach container_Name
Nell'esempio seguente, il sistema si connetterà al nginx-test contenitore:
sudo docker attach nginx-test
Una volta eseguito il comando, lavorerai nel contenitore. Qualsiasi comando eseguito influirà sull'ambiente Docker virtuale.
Metodo 3:usa SSH per connetterti a un contenitore Docker
Puoi connetterti a un container Docker utilizzando SSH (Secure Shell). Normalmente, SSH viene utilizzato per connettersi in remoto su una rete a un server. La tecnologia funziona allo stesso modo quando ci si connette a un contenitore Docker virtuale sul sistema.
Passaggio 1:abilita SSH sul sistema
Inizia installando e abilitando il servizio SSH:
Abilita SSH su Ubuntu 18.04:
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
Abilita SSH su CentOS 7:
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
Passaggio 2:ottieni l'indirizzo IP del contenitore
Ottieni l'indirizzo IP del contenitore utilizzando docker inspect
comando e filtrando i risultati.
Per i moderni motori Docker, usa il comando:
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
Per i motori Docker meno recenti, esegui:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
Il sistema visualizzerà l'indirizzo IP come mostrato nell'immagine sopra.
Fase 3:SSH nel contenitore Docker
Esegui il ping dell'indirizzo IP per assicurarti che sia disponibile:
ping –c 3 172.17.0.2
Usa lo strumento SSH per connetterti all'immagine:
ssh [email protected]
Il sistema dovrebbe richiedere una password dell'utente root per quel contenitore. Se dice Connessione rifiutata , probabilmente non è stato eseguito il provisioning del contenitore per SSH. Se il prompt cambia, ora sei connesso tramite SSH e puoi eseguire comandi nel contenitore.