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 runcomando 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_ce i loro valori corrispondenti sono argument_a_values, argument_b_values, argument_c_valuese 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
vper montare le cartelle locali con il file system contenitore - Ambiente o
eper impostare la password del server RStudio come variabile di ambiente - Porto o
pper 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/rstudioports— imposta la mappatura delle porte tra la macchina locale e il contenitorevolumes– mappa il montaggio delle cartelle, utilizzando il filetypeargomento per definire il tipo di montaggio e il filesourceEtargetargomenti 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, impostiamoPASSWORDvariabile 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-composecomando (al contrario di un longdocker runcomando) - 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
