Una guida passo passo per personalizzare e avviare RStudio Server all'interno di un contenitore con Docker Compose
In questo post esamineremo i passaggi per la configurazione di a Docker-Compose flusso di lavoro per avviare un server RStudio all'interno di un contenitore. Introdurremo il processo di impostazione di Docker Compose e discuteremo quando dovresti prendere in considerazione l'utilizzo. Ultimo ma non meno importante, dimostreremo come eseguire la transizione del file docker run
flusso di lavoro introdotto nel file messaggio precedente e avviare il Immagine del Rocker RStudio con il processo Docker Compose.
Articoli Correlati:
Entro la fine di questo tutorial sarai in grado di eseguire la transizione del tuo file docker run
impostazioni su a docker-compose.yml
file e avvia senza problemi il tuo contenitore RStudio con il file docker-compose
comando.
Motivazione
Prima di iniziare, spieghiamo cos'è Docker Compose e quando dovresti considerare di utilizzarlo.
A partire da Che cosa – Docker Compose è un framework semplicistico per il lancio di contenitori singoli o multipli. È un involucro del docker run
comando e gestisce le impostazioni di avvio del contenitore utilizzando un file YAML. Si consiglia di impostare un flusso di lavoro Docker Compose invece di utilizzare il file docker run
comando Quando:
- Il numero di argomenti di
docker run
comando aumenta e diventa complicato gestirlo tramite la CLI - Utilizzi e lavori regolarmente con il contenitore
- Il livello di complessità è elevato (ad esempio, lancio di più contenitori in parallelo, ecc.)
Noi usiamo il docker-compose.yml
file per configurare un framework Docker Compose e avviarlo con il file docker-compose
comando. Questo processo include la mappatura del file docker run
argomenti in formato YAML. Semplice docker-compose.yml
le impostazioni del file includeranno i due argomenti seguenti:
- Versione — la versione Docker Compose, che attualmente è la 3.9
- Servizi — un elenco di contenitori da avviare e i relativi argomenti corrispondenti
Illustriamo il processo di mappatura del file docker run
argomenti del comando al docker-compose.yml
file con l'esempio seguente:
docker run -argument_a argument_a_values \
-argument_b argument_b_values \
-argument_c argument_c_values \
IMAGE_NAME/IMAGE_TAG
Dove questo comando ha i seguenti tre argomenti: argument_a
, argument_b
, argument_c
e i loro valori corrispondenti sono argument_a_values
, argument_b_values
, argument_c_values
e richiamando la seguente immagine — IMAGE_NAME/IMAGE_TAG
.
Il sotto docker-compose.yml
rappresenta la mappatura di quanto sopra docker run
argomenti:
version: "3.9"
services:
my_service:
image: "IMAGE_NAME/IMAGE_TAG"
argument_a:
- "argument_a_values"
argument_b:
- "argument_b_values"
argument_c:
- "argument_c_values"
IL version
E services
Gli argomenti, come accennato in precedenza, definiscono rispettivamente la versione di Docker Compose e l'elenco di immagini da avviare durante il runtime. In questo caso utilizziamo la versione più recente, la 3.9, e definiamo un unico contenitore sotto il file services
argomento denominato my_service
. Sotto il my_service
sezione, definiamo gli argomenti di runtime corrispondenti a quanto sopra docker run
argomenti del comando che seguono il formato YAML standard.
È importante notare che la convenzione di denominazione mappa tra i file docker run
argomenti del comando e le relative impostazioni nel file docker-compose.yml
il file non è sempre uno a uno. La documentazione di Docker Compose è un'ottima risorsa per identificare le impostazioni degli argomenti.
Nella sezione successiva, collegheremo i punti e mapperemo il docker run
comando che abbiamo impostato nel tutorial precedente su a docker-compose.yml
file.
Impostazione di RStudio con Docker Compose
Ricordiamolo nel esercitazione precedenteabbiamo usato il seguente docker run
comando per avviare il server RStudio all'interno di un contenitore:
docker run --rm -ti \
-v .:/home/rstudio \
-v $HOME/.config/rstudio:/home/rstudio/.config/rstudio \
-v $HOME/.Renviron:/home/rstudio/.Renviron \
-e PASSWORD=yourpassword \
-p 8787:8787 rocker/rstudio
In breve, il comando run precedente utilizza i seguenti argomenti:
- Volume o
v
per montare le cartelle locali con il file system contenitore - Ambiente o
e
per impostare la password del server RStudio come variabile di ambiente - Porto o
p
per mappare i porti locali e quelli per container
Il file YAML seguente rappresenta la mappatura di quanto sopra docker run
comando:
version: "3.9"
services:
rstudio:
image: "rocker/rstudio"
ports:
- "8787:8787"
volumes:
- type: "bind"
source: "."
target: "/home/rstudio"
- type: "bind"
source: "$HOME/.config/rstudio"
target: "/home/rstudio/.config/rstudio"
- type: "bind"
source: "$HOME/.Renviron"
target: "/home/rstudio/.Renviron"
environment:
- PASSWORD=yourpassword
Dove impostiamo un unico servizio denominato rstudio
sotto il services
argomento e definito gli argomenti di esecuzione corrispondenti:
image
— definisce il nome dell'immagine, in questo caso, utilizzando l'immagine RStudio Rockerrocker/rstudio
ports
— imposta la mappatura delle porte tra la macchina locale e il contenitorevolumes
– mappa il montaggio delle cartelle, utilizzando il filetype
argomento per definire il tipo di montaggio e il filesource
Etarget
argomenti per definire la mappatura del percorso della cartella locale e del contenitore. Maggiori dettagli sugli argomenti relativi al volume possono essere trovati Qui.environment
— definisce le variabili di ambiente, in questo caso, impostiamoPASSWORD
variabile per definire la password del server RStudio
Una volta impostato il file YAML, possiamo utilizzare il file docker-compose
comando sulla CLI per avviare il contenitore RStudio:
docker-compose up
Dove il up
argomento viene utilizzato per avviare il contenitore. Dovresti aspettarti il seguente output:
(+) Running 2/2
✔ Network rstudio-docker_default Created 0.1s
✔ Container rstudio-docker-rstudio-1 Created 0.1s
Attaching to rstudio-docker-rstudio-1
rstudio-docker-rstudio-1 | (s6-init) making user provided files available at /var/run/s6/etc...
rstudio-docker-rstudio-1 | exited 0.
rstudio-docker-rstudio-1 | (s6-init) ensuring user provided files have correct perms...
rstudio-docker-rstudio-1 | exited 0.
rstudio-docker-rstudio-1 | (fix-attrs.d) applying ownership & permissions fixes...
rstudio-docker-rstudio-1 | (fix-attrs.d) done.
rstudio-docker-rstudio-1 | (cont-init.d) executing container initialization scripts...
rstudio-docker-rstudio-1 | (cont-init.d) 01_set_env: executing...
rstudio-docker-rstudio-1 | skipping /var/run/s6/container_environment/HOME
rstudio-docker-rstudio-1 | skipping /var/run/s6/container_environment/PASSWORD
rstudio-docker-rstudio-1 | skipping /var/run/s6/container_environment/RSTUDIO_VERSION
rstudio-docker-rstudio-1 | (cont-init.d) 01_set_env: exited 0.
rstudio-docker-rstudio-1 | (cont-init.d) 02_userconf: executing...
rstudio-docker-rstudio-1 | (cont-init.d) 02_userconf: exited 0.
rstudio-docker-rstudio-1 | (cont-init.d) done.
rstudio-docker-rstudio-1 | (services.d) starting services
rstudio-docker-rstudio-1 | (services.d) done.
Dopo aver avviato il contenitore, puoi accedere al server RStudio dal tuo browser utilizzando l'indirizzo host locale con il numero di porta, in questo caso — http://localhost:8787:
Nota: Una volta avviato il contenitore con il file docker-compose up
comando, mantiene la CLI collegata al terminale finché non la arresta. In alternativa è possibile aggiungere il d
argomento per eseguirlo in modalità scollegata:
docker-compose up -d
Allo stesso modo, il docker-compose down
il comando interrompe il runtime del contenitore.
Riepilogo
In questo tutorial, abbiamo esaminato come configurare un framework Docker Compose per avviare il contenitore RStudio. Ciò include l'impostazione di a docker-compose.yml
file e utilizzando il file docker-compose
comando per avviare il contenitore in modo conciso.
Le motivazioni per incartare il tuo docker run
comando con Docker Compose sono:
- Efficiente e conciso: è necessaria un'impostazione una tantum e, successivamente, il tempo di avvio è semplice con il
docker-compose
comando (al contrario di un longdocker run
comando) - Maggiore complessità: semplifica il processo di lancio di uno o più contenitori senza soluzione di continuità. Ad esempio, un buon caso d'uso potrebbe essere l'esecuzione congiunta del database RStudio e Postgres. In questo caso, puoi impostare il processo Docker Compose per avviare i due contenitori in modo che funzionino fianco a fianco
Risorse
Fonte: towardsdatascience.com