Una guía paso a paso para personalizar e iniciar RStudio Server dentro de un contenedor con Docker Compose
En esta publicación, revisaremos los pasos para configurar un Docker-Componer flujo de trabajo para iniciar un servidor RStudio dentro de un contenedor. Presentaremos el proceso de configuración de Docker Compose y discutiremos cuándo debería considerar usarlo. Por último, pero no menos importante, demostraremos cómo hacer la transición docker run flujo de trabajo que se introdujo en el Publicación anterior y lanzar el Imagen Rocker RStudio con el proceso Docker Compose.
Artículos relacionados:
Al final de este tutorial, podrá realizar la transición de su docker run ajustes a un docker-compose.yml archivo e inicie sin problemas su contenedor RStudio con el docker-compose dominio.
Motivación
Antes de comenzar, expliquemos qué es Docker Compose y cuándo debería considerar usarlo.
Comenzando con el qué – Docker Compose es un marco simplista para lanzar contenedores únicos o múltiples. Es una envoltura del docker run comando y administra la configuración de inicio del contenedor mediante un archivo YAML. Se recomienda configurar un flujo de trabajo Docker Compose en lugar de utilizar el docker run dominio cuando:
- El número de argumentos del
docker runEl comando aumenta y se vuelve complicado administrarlo a través de la CLI. - Utiliza y trabaja regularmente con el contenedor.
- El nivel de complejidad es alto (por ejemplo, lanzar varios contenedores en paralelo, etc.)
Usamos el docker-compose.yml archivo para configurar un marco Docker Compose y ejecutarlo con el docker-compose dominio. Este proceso incluye mapear el docker run argumentos en formato YAML. Simple docker-compose.yml La configuración del archivo incluirá los siguientes dos argumentos:
- Versión — la versión de Docker Compose, que actualmente es 3.9
- Servicios — una lista de contenedores para lanzar y sus argumentos correspondientes
Ilustremos el proceso de mapeo de la docker run argumentos de comando para el docker-compose.yml archivo con el siguiente ejemplo:
docker run -argument_a argument_a_values \
-argument_b argument_b_values \
-argument_c argument_c_values \
IMAGE_NAME/IMAGE_TAG
Donde este comando tiene los siguientes tres argumentos: argument_a, argument_b, argument_cy sus valores correspondientes son argument_a_values, argument_b_values, argument_c_valuesy llamando a la siguiente imagen: IMAGE_NAME/IMAGE_TAG.
El siguiente docker-compose.yml representa el mapeo de lo anterior docker run argumentos:
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"
El version y services Los argumentos, como se mencionó anteriormente, definen la versión de Docker Compose y la lista de imágenes que se lanzarán durante el tiempo de ejecución, respectivamente. En este caso, utilizamos la versión más reciente, 3.9, y definimos un único contenedor bajo el services argumento nombrado my_service. Bajo la my_service sección, definimos los argumentos de tiempo de ejecución correspondientes a lo anterior docker run argumentos del comando siguiendo el formato YAML estándar.
Es importante tener en cuenta que la asignación de convenciones de nomenclatura entre docker run argumentos de comando y sus configuraciones en el docker-compose.yml El archivo no siempre es uno a uno. La documentación de Docker Compose es un gran recurso para identificar la configuración de los argumentos.
En la siguiente sección, conectaremos los puntos y mapearemos el docker run comando que configuramos en el tutorial anterior a un docker-compose.yml archivo.
Configuración de RStudio con Docker Compose
Recordemos que en el tutorial anteriorutilizamos lo siguiente docker run comando para iniciar el servidor RStudio dentro de un contenedor:
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
En resumen, el comando de ejecución anterior utiliza los siguientes argumentos:
- Volumen o
vpara montar carpetas locales con el sistema de archivos contenedor - Medio ambiente o
epara establecer la contraseña del servidor RStudio como una variable de entorno - Puerto o
pmapear entre los puertos locales y de contenedores
El siguiente archivo YAML representa el mapeo de lo anterior. docker run dominio:
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
Donde configuramos un único servicio llamado rstudio bajo la services argumento y definió los argumentos de ejecución correspondientes:
image— define el nombre de la imagen, en este caso, usando la imagen RStudio Rockerrocker/rstudioports— establece la asignación de puertos entre la máquina local y el contenedorvolumes— asigna el montaje de carpetas, usando eltypeargumento para definir el tipo de montaje y elsourceytargetargumentos para definir la asignación de ruta de la carpeta local y del contenedor. Se pueden encontrar más detalles sobre los argumentos del volumen. aquí.environment— define variables de entorno, en este caso, configuramosPASSWORDvariable para definir la contraseña del servidor RStudio
Una vez configurado el archivo YAML, podemos usar el docker-compose comando en la CLI para iniciar el contenedor RStudio:
docker-compose up
Donde el up El argumento se utiliza para iniciar el contenedor. Debería esperar el siguiente resultado:
[+] 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.
Después de iniciar el contenedor, puede acceder al servidor RStudio desde su navegador utilizando la dirección del host local con el número de puerto, en este caso: http://localhost:8787:
Nota: Una vez lanzado el contenedor con el docker-compose up comando, mantiene la CLI conectada al terminal hasta que lo detiene. Alternativamente, puede agregar el d argumento para ejecutarlo en modo desconectado:
docker-compose up -d
Asimismo, el docker-compose down El comando detiene el tiempo de ejecución del contenedor.
Resumen
En este tutorial, revisamos cómo configurar un marco Docker Compose para iniciar su contenedor RStudio. Esto incluye establecer un docker-compose.yml archivo y utilizando el docker-compose comando para iniciar el contenedor de forma concisa.
Las motivaciones para envolver tu docker run El comando con Docker Compose son:
- Eficiente y conciso: requirió una configuración única y, luego, el tiempo de inicio es simple con el
docker-composecomando (a diferencia de un largodocker rundominio) - Mayor complejidad: simplifica el proceso de lanzamiento de uno o varios contenedores sin problemas. Por ejemplo, un buen caso de uso sería ejecutar la base de datos RStudio y Postgres juntos. En este caso, puede configurar el proceso Docker Compose para que inicie los dos contenedores para que funcionen uno al lado del otro.