Introducción
Por lo general, los contenedores de Docker solo se ejecutan durante un cierto período de tiempo – el tiempo que se tarda en ejecutar el comando. Solo se puede acceder a los datos que están disponibles dentro del contenedor desde el propio contenedor durante el tiempo de ejecución.
Los volúmenes de Docker se pueden utilizar para acceder a los archivos fácilmente y almacenarlos durante un período más largo. Por ejemplo, si tiene un servidor web Nginx y desea almacenar los registros para auditorías, puede utilizar un volumen de Docker para almacenar los registros del contenedor en su máquina host.
En este tutorial, aprenderá cómo compartir datos entre el interior del contenedor de Docker y la máquina host.
Requisitos previos
Para este tutorial, necesitará los siguientes requisitos previos:
- Servidor Ubuntu 18.04: Puede fácilmente crear un nuevo servidor CloudSigma con la imagen de Ubuntu 18.04, siguiendo nuestro útil tutorial.
- Docker – Puede instalar Docker utilizando nuestro tutorial sobre cómo configurar Docker en Ubuntu y familiarizarse con él.
Paso 1 – Montar un volumen de tipo bind
Puede crear un directorio llamado logs en el directorio de inicio de su usuario actual y realizar un montaje de tipo bind en /var/log/nginx en el contenedor de Nginx utilizando el siguiente comando:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
Aquí tiene información más detallada sobre este comando:
--name=nginxasigna un nombre al contenedor para facilitar su referencia.-del argumento desvincula el proceso y lo ejecuta en segundo plano.-v hostPath:containerPathasigna la ruta del host y la ruta del contenedor para realizar el montaje de tipo bind.-p hostPort:containerPortel argumento asigna el puerto del contenedor al puerto del host.nginxal final de la línea es el nombre de la imagen que se debe utilizar para iniciar el contenedor.
Paso 2 – Acceder a los datos en el host
Ahora, tiene un contenedor de Nginx ejecutándose en su servidor, y el puerto 5000 de su servidor se asigna al puerto 80 de Nginx. Puede abrir el puerto en el navegador web con la siguiente URL:
|
1 |
http://serverIP:5000/ |

En el directorio ~/logs, verá los archivos access.log y error.log. Puede ver los registros utilizando el comando cat:
|
1 |
cat access.log |
|
1 2 3 |
Salida: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
También puede comprobar el directorio de registros ~/logs en su máquina host y encontrar el archivo de registros de Nginx. Además, si realiza algún cambio en la carpeta logs , también se reflejarán en la carpeta /var/log/nginx del contenedor.
Conclusión
En este tutorial, ha aprendido cómo compartir datos entre el interior del contenedor de Docker y la máquina host. Esto es esencial en entornos de desarrollo donde el análisis de registros es imprescindible para la depuración.
Para obtener más recursos sobre Docker en nuestro blog, puede consultar lo siguiente:
- Cómo instalar & operar Docker en Ubuntu en la nube pública
- Instalación y configuración de Docker en CentOS 7
- Limpieza de recursos de Docker – Imágenes, contenedores y volúmenes
- Cómo ejecutar Docker en CloudSigma (con CloudInit) Actualizado
¡Feliz informática!
Comentarios
Aún no hay comentarios. Sea el primero.