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!