Con el gran avance de la tecnología y la increíble cantidad de herramientas que un programador Web debería conocer, uno de los problemas más comunes suele ser el crear contenedores de bases de datos en docker, y ejecutar las aplicaciones en distintas máquinas, con distintas librerías, dependencias o configuraciones de sistema.
Con Docker podemos solucionar este problema ya que nos ayuda a generar un «paquete» de software con las dependencias necesarias para crear y administrar fácilmente contenedores ligeros y portátiles. Esto también incluye a los motores de bases de datos que, de hecho, es uno de sus usos más comunes. En lugar de instalar y configurar manualmente cada base de datos, podemos usar imágenes de Docker para crearlas rápidamente.
Con esto en mente, te vamos a enseñar cómo crear contenedores de bases de datos en docker y usar estas imágenes para que instales tu base de datos favorita.
Pre-requisitos para crear contenedores de bases de datos en docker
Crear contenedores de bases de datos en Docker
Para empezar, vamos a crear un contenedor de la Base de Datos que tú desees. En Docker Hub podemos buscar las imágenes oficiales de las Bases de Datos más populares, por ejemplo MongoDB, MySQL o PostgreSQL. Hay muchas más que puedes encontrar en el repositorio de imágenes de Docker, pero en esta guía veremos las tres mencionadas.
Buscamos la imagen como “mongo”. Asegúrate de que tenga la etiqueta “Docker Official Image”.
Para crear el contenedor usamos el siguiente comando:
docker container run --name my-mongo-db -p 27017:27017 -d mongo- docker container run: comando de Docker para crear un contenedor.
- --name: nombre del contenedor.
- -p: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece Mongo es 27017.
- -d: significa “Detached” y crea el contenedor sin “atar” la terminal.
Buscamos la imagen como “mysql”. Asegúrate de que tenga la etiqueta “Docker Official Image”.

Para crear el contenedor usamos el siguiente comando:
docker container run --name mysql-db -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysqldocker container run: comando de Docker para crear un contenedor.--name: nombre del contenedor.- -e: significa “Environment” y usa
MYSQL_ROOT_PASSWORDpara definir la contraseña por defecto del usuariorooten el contenedor. -p: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece mySQL es3306.-d: significa “Detached” y crea el contenedor sin “atar” la terminal.
Buscamos la imagen como “postgres”. Asegúrate de que tenga la etiqueta “Docker Official Image”.

Para crear el contenedor usamos el siguiente comando:
docker container run --name my-postgres-db -e POSTGRES_PASSWORD=my-secret-pw -p 5432:5432 -d postgresDocker container run: comando de Docker para crear un contenedor.--name: nombre del contenedor.- -e: significa “Environment” y usa
POSTGRES_PASSWORDpara definir la contraseña por defecto del usuariorooten el contenedor. -p: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece postgreSQL es5432.-d: significa “Detached” y crea el contenedor sin “atar” la terminal.
Conectarse a la Base de Datos
Para conectarte a la base de datos tienes que utilizar localhost:puerto_de_la_DB, y podrás utilizarla como cualquier otra base de datos. También puedes usar el comando de Docker para conectarte por la terminal.
docker exec -it my-mongo-db mongodocker exec -it mysql-db bashdocker exec -it my-postgres-db psql -U postgresUsar Docker-Compose para tus proyectos
La opción anterior es muy útil en general, pero es una buena práctica utilizar bases de datos específicas para cada proyectos, generando un contenedor particular para cada caso. Para eso, necesitamos instalar Docker Compose y crear un archivo docker-compose.yml.
version: '3'
services:
db-mongo:
image: mongo
restart: always
container_name: my-mongo-db
ports:
- 27017:27017
volumes:
- ./db-volume:/var/lib/postgresql/dataversion: '3'
services:
db-mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
container_name: mysql-db
ports:
- 3306:3306
volumes:
- ./db-volume:/var/lib/mysqlversion: '3'
services:
db-postgres:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: my-secret-pw
container_name: my-postgres-db
ports:
- 5432:5432
volumes:
- ./db-volume:/var/lib/postgresql/dataUna vez que tienes tu docker-compose listo, todo lo que tienes que hacer es usar el comando:
docker-compose up -dY si deseas destruir ese contenedor, usa el comando:
docker-compose downBuenas prácticas
Ahora, algunas recomendaciones para mejorar tu experiencia al momento de crear contenedores de bases de datos en docker:
- Procura utilizar siempre una tag estable y fija (por ejemplo
mongo:5.0.0). En lo posible, evita la taglatest. - Revisa la documentación oficial de Docker y los repositorios de cada base de datos. Suelen contener mucha información útil para expandir las posibilidades de tu contenedor.
- Elimina las imágenes de Docker que no estás usando para liberar espacio.
- Al terminar de utilizar un contenedor, lo mejor es detenerlo.
- No utilices el usuario
rooten la base de datos. De preferencia, crea un nuevo super-usuario. - Si usas Windows o Mac, puedes usar Docker Desktop, una interfaz gráfica para gestionar tus imágenes, contenedores, y otras opciones de Docker.
Conclusión
Como hemos podido ver, Docker ofrece una excelente forma de tener una o más bases de datos en tu computadora sin saturarla, teniendo la posibilidad de tener tu entorno aislado para cada proyecto sin comprometer los datos de otros contenedores, ni mezclándola entre ellos. Todo de forma muy sencilla y rápida.
¿Estás ampliando tus conocimientos en el mundo del hosting? En Full Tech Solutions, tenemos los planes de Cloud Hosting perfectos para acompañar tu crecimiento. Descubre un servicio optimizado, confiable y diseñado para adaptarse a tus necesidades. ¡Elige la mejor opción para llevar tu proyecto al siguiente nivel!
¡Gracias por confiar en nosotros como su aliado! 🔒 Juntos estamos construyendo un mundo digital más seguro.



