Come Trattare con Mobile Contenitore di Persistenza e di Stoccaggio

0
160

Docker è un containerizzazione servizio, progettato per applicazioni in esecuzione nel proprio ambiente di sistema. È inteso per essere indipendente dalla piattaforma, ma se avete bisogno di memorizzare i dati su un disco, che può essere fatto con volume e bind mount.

Utilizzare un Database Esterno o di un Oggetto Store

Questo è il metodo che la maggior parte delle persone consiglia. Per la memorizzazione dello stato come un file su disco non è in linea con la finestra Mobile del modello, e mentre può essere fatto, è sempre meglio prendere in considerazione:—non si ha realmente bisogno?

Per esempio, diciamo che si sta eseguendo un’applicazione web in una finestra Mobile che ha bisogno di memorizzare i dati in un database. Non ha molto senso eseguire MySQL in un Mobile contenitore, così si dovrebbe, invece, distribuire MySQL su RDS o EC2, e hanno la finestra Mobile contenitore collegare direttamente ad esso. Il Mobile contenitore è interamente apolide come esso è destinato a essere; non può essere fermato, ha iniziato, o colpire con una mazza, e uno nuovo può essere filata al suo posto, il tutto senza perdita di dati. Utilizzando IAM autorizzazioni, questo può essere fatto in modo sicuro, interamente all’interno della vostra VPC.

Se si ha realmente bisogno di memorizzare i file, quali l’utente ha caricato foto e video, si dovrebbe davvero essere utilizzando AWS Simple Storage Service (S3). E ‘ molto più economico EBS-based di archiviazione, e di gran lunga più conveniente rispetto al EFS di stoccaggio, che è la vostra scelta primaria per un filesystem condiviso per ECS contenitori. Piuttosto che la memorizzazione di un file su disco, è possibile caricare direttamente S3. Questo metodo permette anche di eseguire ulteriori elaborazioni utilizzando le funzioni Lambda sul contenuto caricato, come la compressione di immagini o video, che consente di risparmiare molto sui costi di larghezza di banda.

Soluzione semplice: Montare un’Unità di un Contenitore

Mobile ha due modi per ottenere la persistenza: volume monti, e bind mount. Bind mount consentono di montare una particolare posizione sul server del filesystem a una posizione all’interno della finestra Mobile contenitore. Questo collegamento può essere di sola lettura, ma anche di leggere/scrivere i file scritti con la finestra Mobile contenitore vengono salvati sul disco.

È possibile associare i singoli directory host di destinazione directory nella finestra Mobile contenitore, che è utile, ma il metodo consigliato è quello di creare un nuovo “volume”, gestito da scaricatore di porto. Questo rende più facile per il backup, trasferire e condividere i volumi tra le diverse istanze di contenitori.

Una parola di cautela: Se non si dispone di accesso diretto al server che si sta eseguendo la finestra Mobile, come è il caso con gestito distribuzioni come AWS Elastic Contenitore di Servizio (ECS) e Kubernetes, ti consigliamo di prestare attenzione a questo. È legato al server di spazio su disco, che di solito è effimero. Si desidera utilizzare un file esterno store EFS per garantire la persistenza con ECS (più su che più tardi).

Tuttavia, si legano e installare il volume funzionano bene se si sta semplicemente usando la finestra Mobile per l’esecuzione di una facile installazione di un’app sul tuo server, o semplicemente per un rapido persistenza per scopi di test. In ogni modo, il metodo di creazione di volumi sarà la stessa indipendentemente da dove si memorizzarle.

È possibile creare un nuovo volume da riga di comando con:

finestra mobile, volume di creare nginx-config

E poi, quando si va ad eseguire il Mobile contenitore, link al bersaglio nel contenitore con l’ –monte bandiera:

la finestra mobile di esecuzione d
–nome devtest
–monte source=nginx-config ” target=/etc/nginx
nginx:le ultime

Se si esegue la finestra mobile ispezionare <nome>, vedrete il volume elencati sotto i Monti della sezione.

Se si utilizza la finestra Mobile Comporre, l’installazione è facile. Basta aggiungere un volumi di voce per ogni contenitore di servizio è, quindi associare un nome di volume per una posizione nel guest. Avrete anche bisogno di fornire un elenco dei volumi in un alto livello di volumi chiave per Comporre a disposizione.

versione: “3.0”
servizi:
web:
immagine: nginx:le ultime
porti:
– “80:80”
volumi:
– nginx-configurazione:/etc/nginx/
volumi:
nginx-config:

Questo creerà automaticamente il volume per questo la Compongono. Se si desidera utilizzare un premade volume dall’esterno Comporre, specificare esterno: vera nel volume di configurazione:

volumi:
cms-content:
esterno: vera

Se desideri invece basta fare un bind mount e non perdere tempo con i volumi, basta inserire in un percorso di nome al posto del nome del volume, e di rinunciare a definire i nomi di volume.

versione: “3.0”
servizi:
web:
immagine: nginx:le ultime
porti:
– “80:80”
volumi:
– /mobile/nginx-config/:/etc/nginx/

Si può leggere di finestra Mobile completo di documentazione sull’utilizzo di volumi con Comporre se il tuo caso d’uso richiede qualcosa di più specifico rispetto a questo.

Gestito Distribuzioni, Utilizzare un File System Condiviso (AWS EFS)

Se si distribuisce su AWS ECS, non sarà in grado di utilizzare un normale associare o di montaggio del volume, perché una volta che si spegne il contenitore, probabilmente non sarà in esecuzione sulla stessa macchina la prossima volta che lo si avvia, sconfiggendo lo scopo di persistenza.

Tuttavia, è ancora possibile ottenere la persistenza usando un altro servizio AWS—Elastico File System (EFS). EFS è una condivisione di rete di file di sistema. Si può montare a più server EC2, e l’accesso ai dati verranno sincronizzate su tutti loro. Per esempio, si potrebbe usare questo per ospitare il contenuto statico e il codice per il tuo sito web, quindi eseguire tutti i nodi del lavoratore su ECS per gestire l’effettivo servizio del contenuto. Questo si ottiene circa la limitazione di non memorizzare i dati su disco, in quanto il volume di montaggio è associato a un’unità esterna che persiste attraverso ECS distribuzioni.

Per impostare questa funzione, è necessario creare un file EFS sistema. Questo è abbastanza semplice, e può essere fatto da EFS Management Console, ma ti consigliamo di prendere nota dell’ID di volume, come avrete bisogno di lavorare con il volume.

Se avete bisogno di aggiungere manualmente o modificare i file in EFS volume, è possibile montare qualsiasi istanza EC2. Devi installare amazon-efs-utils:

sudo yum install -y amazon-efs-utils

E poi montarlo con il seguente comando, utilizzando l’ID:

sudo mount -t efs fs-12345678:/ /mnt/efs

In questo modo, è possibile visualizzare e modificare il contenuto del tuo EFS volume come se fosse un altro HDD sul vostro server. Si desidera assicurarsi che si dispone di nfs-utils installata per funzionare correttamente.

A quel punto, dovrete collegare ECS a questo volume. Creare una nuova definizione di attività in ECS Console di Gestione. Scorrere verso il basso e selezionare “Configura Tramite JSON.” Quindi, sostituire il vuoto “volumi”, chiave con il seguente JSON, aggiungendo la “famiglia” alla fine:

“volumi”: [
{
“nome”: “efs-demo”,
“host”: null,
“dockerVolumeConfiguration”: {
“autoprovision”: true,
“label”: null,
“campo di applicazione”: “comune”,
“driver”: “locale”,
“driverOpts”: {
“type”: “nfs”,
“dispositivo”: “:/”,
“o”: “addr=fs-XXXXXX.efs.us-east-1.amazonaws.com,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport”
}
}
}
],
“famiglia”:”nginx”,

Sostituire fs-XXXXXX.efs.us-east-1.amazonaws.com con EFS volume reale indirizzo. Si dovrebbe vedere un nuovo volume:

È possibile utilizzare questo nel vostro contenitore definizione di un punto di montaggio. Selezionare “Aggiungi Contenitore” (o modificarne uno esistente), sotto la voce “Archiviazione E Registrazione”, selezionare il volume appena creato e specificare un percorso del contenitore.

Salva la definizione di attività, e quando si avvia un cluster con questa nuova definizione, tutti i contenitori saranno in grado di accedere al file system condiviso.