Revista Tecnología

VMware Photon - Cómo crear un contenedor Docker con MongoDB

Publicado el 11 mayo 2015 por Dbigcloud @dbigcloud

La semana pasada estuvimos hablando de VMware Photon, el "sistema operativo" desarrollado por VMware, optimizado para trabajar con contenedores, vimos somo instalarlo y como desplegar un contenedor Docker con NGINX. Hoy vamos a profundizar un poco más con Docker y vamos a ver cómo podemos crear un Dockerfile, un fichero de texto que contiene comandos que son interpretados por Docker para crear contenedores, para desplegar un contenedor con MongoDB en la instalación de VMware Photon de la semana pasada.

 

container docker vmware photon por DBigCloud

Para crear un Dockerfile tenemos que tener en cuenta una serie de comandos los cuales podéis consultar en la documentación de referencia, yo os voy a hablar de los que vamos a usar para nuestro ejemplo.

FROM usado para establecer la imagen base, para así poder interpretar comandos, normalmente se suele usar los sistemas operativos más comunes.

FROM centos

RUN nos va a permitir ejecutar comandos a través de la shell, como por ejemplo crear un usuario

RUN useradd -s dbigcloud /bin/bash

ADD se utiliza para copiar o crear nuevos ficheros, como por ejemplo repositorios

ADD mongodb-org-3.0.repo /etc/yum.repos.d/dbigcloud.repo

VOLUME es utilizado para crear un punto de montaje en el que se desplegara el contenedor.

VOLUME /data/db

ENV usado para establecer variables de entorno, como por ejemplo el directorio home de un usuario

ENV HOME /home/dbigcloud

USER nos permite establecer el usuario que va a correr el contenedor

USER dbigcloud

EXPOSE se usa para especificar el puerto por el que va a escuchar el contenedor

EXPOSE 3306

CMD sirve para ejecutar el software que estamos desplegando, solo puede haber uno en el Dockerfile y suele ser la última instrucción

CMD ["mysqld"]

Cómo crear un Dockerfile para desplegar MongoDB en una imagen Centos

Gracias a que VMware Photon ya viene configurado con repositorios listos para usar con Docker, podemos crear un Dockerfile que use como imagen base, posteriormente necesitaremos crear un fichero .repos en el que se incluira el repositorio oficial de MongoDB

Para este ejemplo voy a usar la versión 3.0 de MongoDB, asi que necesitamos crear el fichero mongodb-org-3.0.repo con el contenido del repositorio.

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

Este fichero, lo vamos a guardar en la misma ruta que el fichero que vamos a crear Dockerfile, en el cual vamos a empezar a definir las instrucciones necesarias para crear la imagen base para el contenedor.

FROM centos

# Creamos el grupo y el usuario monogodb.
RUN groupadd -r mongodb & useradd -mrg mongodb mongodb

# Copiamos el repositorio de MongoDB 3.0 en la ruta indicada.
ADD mongodb-org-3.0.repo /etc/yum.repos.d/mongodb-org-3.0.repo

# Procedemos a instalar MongoDB.
RUN yum install -y mongodb-org
RUN yum clean all

# Creamos la carpeta en la que va a correr el contenedor y establecemos los permisos para el usuario mongodb
RUN mkdir -p /data/db & chown -R mongodb:mongodb /data/db

# Establecemos la carpeta creada enteriormente como el volumen
VOLUME /data/db

# Ruta del home del usuario mongodb
ENV HOME /home/mongodb

# Usuario que va a ejecutar el contenedor
USER mongodb

# Puerto por defecto por el que escuchará el contenedor.
EXPOSE 27017

# La ejecucción de MongoDB
CMD ["mongod"]

Podéis descargar el fichero del siguiente repositorio que hemos creado.

Una vez hemos creado el fichero anterior y el de repositorio, vamos a construir la imagen necesaria para desplegar el contenedor, para ello ejecutaremos, en el mismo directorio donde esta el Dockerfile, lo siguiente:

docker build -t="dbigcloud/mongodb" .

Durante la construccion de la imagen, veremos como va descargando los paquetes y va instalandolos, a la vez que se ejecutan los comandos del Dockerfile, una vez finalizado, ya podemos desplegar el contenedor, ejecutaremos lo siguiente:

docker run -d -p 27017:27017 dbigcloud/mongodb

Al desplegar el contenedor nos aparece un ID, este es necesario para poder operar con el contenedor, pero no es necesario memorizarlo ya que podemos ver los contenedores que se están ejecutando de la siguiente forma:

docker ps

Si queremos acceder al contedor usaremos el siguiente comando

docker exec -it ID bash

Para conocer el listado de comandos que usa Docker para trabajar con contenedores, podéis recurrir a la ayuda

 docker --help

Cómo veis, trabajar con contenedores no es muy complicado al igual que crear Dockerfiles, existe un repositorio oficial del cual podéis descargar Dockerfiles, espero que os haya sido útil.



Volver a la Portada de Logo Paperblog