GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo implementar y administrar un contenedor Docker MongoDB

MongoDB es una popular base de datos de documentos de código abierto que proporciona un alto rendimiento y una gran flexibilidad. Pero, ¿ha intentado contener una base de datos MongoDB para sus proyectos? Si no, ¡entonces te espera un regalo!

En este tutorial, aprenderá cómo implementar, asegurar y administrar MongoDB de manera efectiva con Docker. ¡Así que siga leyendo y conviértase en su propio maestro en la implementación de contenedores Docker MongoDB!

Requisitos

Este tutorial comprende demostraciones prácticas. Para seguir, asegúrese de tener lo siguiente:

  • Una máquina con Ubuntu:este tutorial usa Ubuntu 20.04 LTS
  • Un usuario con sudo permiso
  • Docker:este tutorial utiliza Docker 20.10.9

Descargando la imagen Docker MongoDB

Antes de que pueda implementar y administrar un contenedor Docker MongoDB, primero debe descargar una imagen MongoDB desde Docker Hub para poder ejecutar el contenedor MongoDB localmente.

Ejecute el docker Comando a continuación para descargar la imagen MongoDB Community Edition (CE) (pull mongo ), que aloja Docker Hub. La última versión de esta imagen en el momento de escribir este artículo es la 4.2.

sudo docker pull mongo

Como puede ver a continuación, el comando extrae automáticamente la última versión de la imagen y la etiqueta como última .

Ahora ejecuta las docker images Comando a continuación para enumerar todas las imágenes disponibles en su servidor.

sudo docker images

A continuación, puede ver la imagen de MongoDB etiquetada como más reciente .

Implementación de un contenedor Docker MongoDB

A partir de la imagen de MongoDB que descargó, ahora puede implementar un contenedor de MongoDB. Inicializará su contenedor MongoDB con el ejecutable mongo, creará un directorio de datos. Luego, definirá la asignación entre el área de datos del contenedor Docker y la máquina host.

1. Ejecute mkdir comando a continuación para crear un directorio de datos llamado mongodata para almacenar la base de datos y los registros de MongoDB.

sudo mkdir -p /mongodata

2. A continuación, ejecute docker run Comando a continuación para crear un contenedor con el nombre mymongo . Además, el contenedor se inicia con un pseudo-TTY interactivo (-it ), en caso de que se deba mostrar la salida al iniciar el contenedor.

Finalmente, el directorio recién creado mongodata está enlazado (-v ) al directorio interno, /data/db . El -d La opción inicia el contenedor en el modo separado, por lo que se ejecuta como un proceso en segundo plano y devuelve la salida de la consola al momento de la creación.

El sistema crea automáticamente el /data/db directorio cuando ejecuta el contenedor para almacenar datos de los cambios que realiza en el contenedor. Este directorio se ejecuta en un modo similar al de solo lectura y permite el almacenamiento persistente de datos en el sistema host.

sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo

Una vez que el comando se complete con éxito, verá un resultado como el que se muestra a continuación.

3. Finalmente, ejecute docker ps Comando a continuación para identificar la identificación del contenedor y verificar su estado. El docker ps El comando muestra toda la información sobre el contenedor que se está ejecutando actualmente.

El docker ps el comando es comparable al ps regular comando en Linux.

sudo docker ps

En el resultado que se muestra a continuación, puede ver un Puertos sección que enumera todos los puertos asignados al contenedor para escuchar las conexiones entrantes.

En este ejemplo, puerto 27017 se asigna al host. El siguiente resultado indica que puede acceder a la instancia de MongoDB en este contenedor a través de localhost:27017 del anfitrión.

Tal vez quiera ver el archivo de registro de mymongo contenedor para determinar qué sucedió en su base de datos/instancia mongo cuando algo salió mal. Si es así, ejecute los docker logs comando, así:sudo docker logs docker-container . Reemplazar docker-container con el nombre de su contenedor Docker.

Adjuntar el contenedor Docker MongoDB a Bash Shell

Acaba de implementar un contenedor Docker MongoDB, pero ¿cómo lo administra? Hágalo adjuntando el contenedor Docker al shell Bash con docker exec orden primero.

Adjuntar su contenedor al shell Bash es crucial ya que el contenedor se está ejecutando actualmente en modo separado (ejecutándose en segundo plano). Y si el contenedor se ejecuta en segundo plano, el contenedor no recibirá ninguna entrada ni mostrará la salida.

Ejecute docker exec comando a continuación para adjuntar su contenedor (mymongo ) al shell de Bash.

sudo docker exec -it mymongo bash

Cuando se complete el comando, su mensaje cambiará a algo como el siguiente. El número alfanumérico único (77782fa95314 ) es el ID del contenedor.

Los ID de contenedor son esenciales para evitar conflictos de nombres e identificar contenedores entre hosts de manera efectiva, así que trate de no cambiarlos.

Ahora ejecuta el mongo Comando sin ningún argumento para iniciar sesión en el shell de MongoDB en el contenedor (mymongo). El shell de MongoDB es donde ejecuta sus consultas/comandos de mongo.

Una vez que esté en el contenedor, puede ejecutar cualquier comando sin sudo prefijo ya que ahora es un usuario raíz dentro del contenedor. Cada cambio que realice en el contenedor no afectará su sistema host.

mongo

Al mirar el mensaje que se muestra a continuación, puede saber que ahora está en el shell de MongoDB.

Si prefiere ver todos los comandos disponibles en el shell de MongoDB, ejecute la help comando, como se muestra a continuación.

Creación de un usuario administrativo de MongoDB

Después de implementar un servidor MongoDB dentro de un contenedor Docker, ahora creará un usuario administrativo de MongoDB. Un usuario administrativo le permite conectarse al servidor MongoDB y administrar bases de datos.

1. Vuelva a iniciar sesión en el shell de MongoDB y ejecute use Comando a continuación para cambiar primero al admin base de datos. Si lo hace, proporciona al usuario administrativo los permisos adecuados para administrar las bases de datos.

use admin

Copie y pegue el siguiente código en el indicador de MongoDB para crear un usuario administrativo.

El siguiente código usa db.createUser() método para crear un usuario con roles administrativos. El nombre de usuario (user ) y contraseña (pwd ) a continuación están codificados, que puede cambiar según sus preferencias.

# Create an administrative user
db.createUser(
{
	# Sets the username for the administrative user
	user: "ata",
	# Sets the password for the administrative user
	pwd: "password123",
	# Sets the roles for the administrative user
	roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

Si el código funciona, recibirá un mensaje como el siguiente en su indicador de MongoDB.

3. Ejecute quit() consulta a continuación para salir del shell de MongoDB.

quit()

4. Finalmente, ejecute el siguiente mongo comando para probar el usuario administrativo que creó (ata ) conectándose al servidor MongoDB. Ingrese la contraseña para el usuario administrativo cuando se le solicite.

mongo -u ata -p --authenticationDatabase admin

Como puede ver a continuación, el servidor MongoDB imprime la versión del servidor MongoDB si se conecta correctamente al servidor.

Quizás quiera probar más al usuario administrativo. Si es así, ejecute los siguientes comandos para mostrar todos los usuarios en la base de datos.

use admin
show users

A continuación, puede ver que el usuario administrativo que creó está en la lista.

Creación de una base de datos MongoDB

La gestión de un contenedor Docker MongoDB no estaría completa sin crear una base de datos. Creará una nueva base de datos MongoDB en la que almacenará datos a través del shell de MongoDB.

1. Desde una sesión interactiva dentro del contenedor Docker, ejecute show dbs Comando a continuación para enumerar todas las bases de datos en su servidor.

show dbs

A continuación, puede ver una base de datos de administración, una base de datos de configuración y una base de datos local. El shell MongoDB crea estas bases de datos de forma predeterminada en cada servidor MongoDB.

2. A continuación, ejecute use comando a continuación para crear una nueva base de datos. Reemplazar <database_name> con el nombre de la base de datos de su elección. Pero para este ejemplo, la base de datos se llama linux .

El use query cambia la base de datos actual a la que especifique, si existe. Si no, el use query crea una nueva base de datos y cambia automáticamente a ella.

use <database_name>

3. Vuelva a ejecutar show dbs comando como lo hizo anteriormente (paso uno) para ver si la base de datos que creó existe.

show dbs

¿Aún no ve la base de datos recién creada (linux) en la lista? MongoDB crea la base de datos solo cuando almacena datos en ella por primera vez. Los datos pueden estar en forma de colección o incluso de documento.

4. Ahora copie y pegue el siguiente código en el shell de MongoDB y presione Intro. .

El siguiente código crea una nueva colección llamada linux_version , que puedes cambiar al nombre que prefieras. La colección contiene datos en formato de pares clave:valor.

# Using insertOne method to insert data
db.linux_version.insertOne(
	# Key:value pairs to insert to the database
	{ "debian" : "11",
	"ubuntu" : "20.04",
	"rocky linux" : "8.4",
	"alma linux" : "8"
	}
)

En el resultado a continuación, puede ver la linux_version se crea la colección y viene con un ObjectID .

5. Ejecute show collections comando para ver una lista de colecciones y ver si la nueva colección linux_version existe

show collections

Puede ver a continuación que ha creado con éxito la versión_linux recopilación.

6. Finalmente, ejecute el siguiente comando para ver y confirmar los datos que insertó en linux_version la colección es correcta. El método pretty() le permite ver los datos en un formato legible por humanos.

db.linux_version.find().pretty()

Si alguna vez modifica los datos en la base de datos, use Update() método.

Puede ver que el resultado a continuación está en un formato mucho más legible.

Reinicio del contenedor Docker MongoDB

A estas alturas, tiene un contenedor Docker MongoDB que se ejecuta correctamente. Pero, ¿qué sucede si ya no tiene ningún uso para el contenedor o si no funciona? Un par de comandos de Docker pueden ayudar a detener, reiniciar e incluso eliminar un contenedor Docker de MongoDB.

1. Ejecute docker ps Comando a continuación para enumerar todos los contenedores en ejecución.

sudo docker ps

Anote el nombre y la identificación del contenedor que desea detener, reiniciar o eliminar, como se muestra a continuación.

2. A continuación, ejecute cualquiera de las docker stop Comandos a continuación para detener un contenedor MongoDB en ejecución.

sudo docker stop mymongo
sudo docker stop container-ID

3. Vuelva a ejecutar docker ps comando como lo hizo anteriormente (paso uno) para verificar si el contenedor se ha cerrado.

sudo docker ps

Como puede ver a continuación, el contenedor no está en la lista de contenedores en ejecución, lo que indica que lo detuvo con éxito.

4. Ahora ejecute cualquiera de los docker start comandos a continuación si decide reiniciar un contenedor.

sudo docker start mymongo
sudo docker start container-ID

5. Finalmente, vuelva a ejecutar docker ps comando para ver si el contenedor se está ejecutando.

sudo docker ps

Quizás ya no necesite un contenedor. Si es así, primero debe detener el contenedor y ejecutar rm comando para eliminar un contenedor, como este:sudo docker container rm mongodb . Similar a los ejemplos anteriores, reemplace mongodb con el nombre del contenedor o el ID del contenedor.

Conclusión

En este tutorial, aprendió a implementar y administrar un contenedor Docker MongoDB mediante la creación de un usuario administrador para crear una base de datos y almacenar datos en ella. Se ha dado cuenta de que puede detener, reiniciar y eliminar contenedores que ya no necesita para mantener limpias las imágenes de Docker.

La implementación y administración de MongoDB con Docker es el primer paso para aprovechar la tecnología de contenedores y reducir los gastos generales. ¿Por qué no usar este primer paso para explorar más MongoDB y ver cómo un contenedor Docker MongoDB puede ayudarlo con sus proyectos?


Docker
  1. Cómo implementar un contenedor nginx con Docker en Linode

  2. Cómo instalar Docker e implementar una pila LAMP

  3. Cómo crear una imagen de Docker a partir de un contenedor y un archivo Docker

  4. Cómo hacer una copia de seguridad y restaurar contenedores Docker

  5. Cómo pausar y reanudar contenedores Docker

Cómo usar SSH en un contenedor Docker y ejecutar comandos

Cómo instalar y configurar Docker Container en AlmaLinux 8

Cómo implementar un contenedor Docker en AWS Elastic Beanstalk

Cómo copiar archivos entre el host y el contenedor Docker

Cómo gestionar contenedores Docker

Cómo implementar un contenedor Docker en Jelastic Cloud