Si usas Docker, a veces como devop colombiano te enfrentas a dificultades en encontrar un medio óptimo para desplegar tus aplicaciones orientadas al mercado Colombiano.
Normalmente sólo puedes usar proveedores extranjeros donde la latencia es como mínimo 80 milisegundos y dependes de enlaces internacionales y facturación en dólares. 
En este primer artículo, hablaremos sobre cómo ejecutar un Contenedor Docker en Colombia a través de un Servidor de Contenedores provisto por Conexcol Cloud Colombia.

Entonces, ¿qué es un Servidor de Contenedores?

Los Servidores de Contenedores (Container Server) son servidores provistos por Conexcol Cloud que brindan la capacidad de ejecutar contenedores Docker junto con los servicios necesarios para administrarlos. El Container Server consiste una máquina virtual especializada que corre CoreOS, que es liviano y altamente escalable. Las herramientas necesarias para ejecutar los contenedores Docker ya vienen instaladas, y Conexcol expone la capacidad de administrar la configuración de la nube a través de la interfaz web del panel de control.

# 1. Despliega un Servidor Contenedor en Colombia.

Para comenzar, debes armar tu servidor cloud y seleccionar CoreOS como sistema operativo.

# 2. Corriendo un servidor contenedor Docker

Primero veamos cómo podemos ejecutar un servidor de contenedor a través de cloud-config. Este no es un ejemplo completo de una config-cloud (realmente no tiene sentido desplegar un solo contenedor dentro de un solo servidor contenedor …) pero muestra el marco básico que se necesita para poner en marcha tus propios contenedores.

Aquí está el ejemplo cloud-config:

# cloud-config

coreos:
 units:
  - name: docker.service
   command: start

  - name: dockerapp.service
   command: start
   content: |
    [Unit]
    Requires=docker.service
    After=docker.service
    [Service]
    ExecStart=/usr/bin/docker run -d -p 80:80 nginx

Vamos a dividir esto en partes. Todos los cloud-config comienzan con ‘# cloud-config’ para denotar que es un archivo de configuración de nube ‘cloud-config‘. Después de eso, tenemos la sección ‘coreos‘ que te permite configurar diferentes servicios en el sistema operativo CoreOS, incluyendo la subsección de ‘units‘ para servicios individuales.

Dentro de esa subsección, debemos agregar al menos los campos ‘name‘ y ‘command‘ para cada servicio que queremos correr. Lo siguiente iniciará el servidor Docker dentro del servidor contenedor:

 - name: docker.service
    command: start

A continuación crearemos otra sección de servicio con ‘dockerapp.service‘ para iniciar un contenedor Docker, y esta vez crearemos una sección de ‘content‘ para proporcionar más parámetros:

 - name: dockerapp.service
    command: start
    content: |

Dentro de la sección de contenido configuraremos los parámetros en dos secciones diferentes. Primero configuraremos la sección ‘[Unit]‘ para indicarle a este servicio que espere hasta que se haya iniciado ‘docker.server‘ y que se requiere ejecutar este servicio. Esto se hace usando las siguientes líneas:

 [Unit]
     Requires=docker.service
     After=docker.service

Luego, bajo la sección ‘[Service]‘, le diremos al sistema que inicie un contenedor de docker nginx que escuchará en el puerto 80 del servidor contenedor y lo traduzca al puerto 80 dentro del contenedor. Esto se hace ejecutando los siguientes comandos:

 [Service]
     ExecStart=/usr/bin/docker run -d -p 80:80 nginx

# 3. Ejecución de contenedores a través de línea de comando

Ahora veamos cómo podemos ejecutar contenedores a través de la línea de comando. Dentro de un servidor de contenedores que ya está ejecutando el servidor Docker, se puede iniciar el mismo contenedor docker nginx, simplemente  ejecutando el siguiente comando:

Si deseas ver una lista de contenedores docker en ejecución, puedes usar:

Otros comandos que pueden ser de utilidad:

 docker ps -a
Mostrará una lista de contenedores Docker incluyendo exit / failed
 docker log <container_id>
Mostrará los registros de ese contenedor Docker
 docker top <container_id>
Muestra el comando ‘top’ de ese contenedor Docker
 docker stop <container_id>
Se detendrá ese contenedor Docker
 docker kill <container_id>
Matará ese contenedor Docker

Si deseas ver la línea de comando de tu nuevo contenedor docker, puedes hacerlo utilizando los siguientes comandos:

Espero que esto te proporcione suficiente información para comenzar con los Servidores de Contenedores de Conexcol Cloud.

Futuramente encontrarás más publicaciones sobre otras cosas que puedes hacer con un servidor de contenedores, como ejecutar un entorno en clúster y crear tu propio contenedor. No te olvides de compartir este artículo a otros devops colombianos!