Docker: Iniziare

Come iniziare con Stackhero per Docker

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione Docker cloud CaaS (Containers as a Service) pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Distribuisci facilmente i tuoi container in produzione con un semplice docker-compose up.
  • Nome di dominio personalizzabile protetto con HTTPS (ad esempio, https://api.tua-azienda.com, https://www.tua-azienda.com, https://backoffice.tua-azienda.com).
  • Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
  • Aggiornamenti senza sforzo con un solo clic.

Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione di hosting cloud Docker CaaS di Stackhero e distribuire i tuoi container in produzione!

Docker CLI deve essere installato sul tuo computer. Se non lo hai ancora installato, puoi scaricarlo qui: https://www.docker.com/products/docker-desktop/.

Con Stackhero per Docker, puoi connetterti al tuo server Docker da remoto dal tuo computer proprio come faresti lavorando in locale. Questa configurazione ti consente di mantenere il tuo flusso di lavoro abituale offrendo un modo robusto per gestire i tuoi container in produzione.

Per ottenere ciò, vengono utilizzati i "contesti" Docker. I contesti Docker ti permettono di utilizzare la CLI Docker sul tuo computer e specificare dove devono essere eseguiti i comandi: sul tuo demone Docker locale (come al solito) o sulla tua istanza Stackhero per Docker.

Per connetterti da remoto alla tua istanza Stackhero per Docker, dovrai prima installare i suoi certificati. Questi certificati garantiscono un'autenticazione e una crittografia sicure tra il tuo computer e la tua istanza Stackhero per Docker.

Sul tuo computer, puoi utilizzare il seguente comando:

# HOST è il nome di dominio della tua istanza Stackhero per Docker (<XXXXXX>.stackhero-network.com).
# SERVICE_ID è il tuo ID servizio Stackhero.
# CERTIFICATES_PASSWORD è la password definita nella tua configurazione Stackhero per Docker.
(export HOST="<XXXXXX>.stackhero-network.com"
export SERVICE_ID="<SERVICE_ID>"
export CERTIFICATES_PASSWORD="<CERTIFICATES_PASSWORD>"

cd /tmp/ \
  && curl -o certificates.tar https://docker:$CERTIFICATES_PASSWORD@$HOST/stackhero/docker/certificates.tar \
  && tar -xf certificates.tar \
  && (docker context rm -f $HOST 2> /dev/null || true) \
  && docker context create $HOST \
    --description "$SERVICE_ID ($HOST)" \
    --docker "host=tcp://$HOST:2376,ca=ca.pem,cert=cert.pem,key=key.pem")

Hai ora creato un contesto Docker che prende il nome dal nome di dominio del tuo servizio. Per visualizzare tutti i tuoi contesti, puoi eseguire il comando docker context ls.

Se aggiorni il tuo dominio di servizio, i certificati cambieranno e dovrai reinstallarli.

Attualmente, se elenchi i tuoi container con il comando docker ps, la tua CLI Docker utilizzerà il tuo demone Docker locale, mostrando i container in esecuzione sul tuo computer.

Ad esempio, puoi eseguire questo comando per ottenere l'IP pubblico del tuo demone Docker: docker run --rm alpine wget -q -O - ifconfig.me. Poiché il container è in esecuzione sul tuo computer, vedrai l'IP del tuo router internet come risposta.

Cambiamo il contesto Docker per utilizzare la tua istanza Stackhero per Docker. Esegui semplicemente il comando docker context use <XXXXXX>.stackhero-network.com. Ora, i comandi Docker avviati sul tuo computer verranno eseguiti in modo sicuro sul tuo demone Docker remoto.

Esegui nuovamente lo stesso comando per recuperare l'IP pubblico del tuo demone Docker: docker run --rm alpine wget -q -O - ifconfig.me. Dovresti ora vedere l'IP pubblico della tua istanza Stackhero per Docker, confermando che il tuo container è in esecuzione sul tuo server e non più sul tuo computer.

Per tornare a utilizzare il tuo demone Docker locale, basta cambiare nuovamente il tuo contesto Docker su "default": docker context use default.

Quando monti un volume su un container remoto, i dati accessibili saranno quelli sul server remoto e non quelli sul tuo computer. Pertanto, eseguire un comando come docker run -it -v ${PWD}:/mnt alpine non monterà la directory dal tuo computer come potresti aspettarti.

Come la CLI Docker, la CLI Docker-compose utilizzerà il tuo contesto attuale. Pertanto, una volta che hai cambiato alla tua istanza remota con docker context use <XXXXXX>.stackhero-network.com, ogni comando Docker-compose verrà eseguito anche sulla tua istanza remota.

Utilizzare il comando docker context è efficace, ma potrebbe non essere l'approccio migliore quando si gestiscono i contesti nei tuoi script o Makefile. In questi casi, considera l'uso della variabile d'ambiente DOCKER_CONTEXT, che è dettagliata nelle nostre pagine di documentazione avanzata.