Creación de una imagen IBM Integration Bus de ejemplo utilizando Docker

Puede crear una imagen de IBM® Integration Bus Docker de ejemplo.

Acerca de esta tarea

Para ejecutar IBM Integration Bus en un contenedor Docker, primero debe crear una imagen base que contenga una instalación de IBM Integration Bus, siguiendo los pasos descritos en este tema. Como alternativa, puede descargar una imagen de la edición IBM Integration Bus para desarrolladores de https://hub.docker.com/r/ibmcom/iib/ y ejecutar esto en un contenedor Docker.

Un Dockerfile es un conjunto de instrucciones destinadas a crear una imagen de Docker. Las imágenes pueden almacenarse en registros locales o remotos y se utilizan para crear un contenedor Docker en ejecución. Para crear la imagen, Docker ejecuta las instrucciones del Dockerfile. Cada instrucción provoca la creación de una nueva capa de imagen. Los procedimientos recomendados de Docker aconsejan mantener al mínimo el número de instrucciones del Dockerfile, ya que el número de capas de una imagen puede ser limitado. Las directrices, que están disponibles en https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices, sugieren que " encuentra el equilibrio entre la legibilidad (y por lo tanto la capacidad de mantenimiento a largo plazo) del archivo Dockerfile y la minimización del número de capas que utiliza. Sea estratégico y cuidadoso con respecto al número de capas que utiliza.”

ElFROMLa instrucción aprovecha la capacidad de capas en imágenes Docker; por ejemplo, una imagen de IBM Integration Bus podría construirse encima de una imagen de Ubuntu. También podría crear imágenes de IBM Integration Bus que se compitan en la parte superior de las imágenes que contienen IBM MQ.

El siguiente repositorio de GitHub contiene un Dockerfile y algunos scripts que muestran una forma en la que puede crear una imagen de IBM Integration Bus Docker: https://github.com/ot4i/iib-docker.

Procedimiento

Los pasos siguientes muestran cómo crear una imagen base de ejemplo, utilizando los scripts que están alojados en GitHub:

  1. Cree la imagen utilizando mandatos Docker estándar en el Dockerfile proporcionado.
    Por ejemplo:
    cd 10.0.0.9
    docker build -t iibv10image .
    Este mandato crea una imagen llamada iibv10image, que ocupa aproximadamente 1,15 GB de espacio (incluyendo el tamaño de la imagen base de Ubuntu subyacente) en el registro Docker local, tal como se muestra en el ejemplo siguiente:
    REPOSITORY     TAG       IMAGE ID        CREATED          SIZE
    iibv10image    latest    b8403ecfcd0d    2 seconds ago    1.15GB
    ubuntu         14.04     132b7427a3b4    3 weeks ago      188MB

    La imagen incorporada contiene una instalación completa de IBM Integration Bus para desarrolladores en el último nivel de fixpack.

  2. Después de crear una imagen Docker a partir de los archivos proporcionados, puede ejecutar un contenedor que creará e iniciará un nodo de integración, en el cual puede desplegar soluciones de integración. Para ejecutar un contenedor a partir de esta imagen, complete los pasos siguientes:
    1. Acepte los términos de la licencia de IBM Integration Bus para desarrolladores , especificando la variable de entornoLICENSEigual aacceptal ejecutar la imagen.
      También puede ver los términos de la licencia estableciendo esta variable enview. Si no se establece la variable, se producirá la terminación del contenedor con una sentencia de uso. Puede ver la licencia en un idioma diferente estableciendo laLANGvariable de entorno.
    2. Opcional: Además de aceptar la licencia, puede especificar un nombre de nodo de integración utilizando laNODENAMEvariable de entorno.
    3. Configure los puertos para la administración del nodo de integración y el tráfico HTTP del servidor de integración.
      De forma predeterminada, el archivo Dockerfile expone el puerto4414para la administración del nodo de integración y el puerto7800para el tráfico HTTP del servidor de integración. Esto significa que puede ejecutar con el-Pdistintivo para correlacionar automáticamente estos puertos con los puertos del host. Como alternativa, puede utilizar-ppara exponer y correlacionar cualquier puerto de su elección.
      Por ejemplo, el mandato siguiente ejecuta un contenedor que crea e inicia un nodo de integración llamado MYNODE, y expone los puertos 4414 y 7800 en puertos aleatorios en la máquina host:
      docker run --name myNode -e LICENSE=accept -e NODENAME=MYNODE -P iibv10image
      Ahora puede utilizar el mandato siguiente para ver qué puertos se han correlacionado y, después, conectarse a la interfaz de usuario de web para el nodo de integración de la forma habitual.
      docker port <container name>
  3. Ahora puede ejecutar mandatos de administración de IBM Integration Bus utilizando uno de los métodos siguientes:
    • Ejecute los mandatos directamente en un contenedor, conectando una sesión de Bash al contenedor y ejecutando los mandatos de la forma habitual:
      docker exec -it <container name> /bin/bash

      En este punto usted estará en una concha dentro del contenedor y puede ser fuentemqsiprofiley ejecute los mandatos.

    • Utilice el exec de Docker para ejecutar una sesión de Bash no interactiva que ejecute cualquiera de los mandatos de IBM Integration Bus . Por ejemplo:
      docker exec <container name> /bin/bash -c mqsilist 
  4. Opcional: Esta imagen también configura syslog, por lo que, al ejecutar un contenedor, el nodo generará mensajes en /var/log/syslog, dentro del contenedor. Puede acceder a esto conectando una sesión Bash (tal como se describe arriba) o utilizando el docker exec.
    Por ejemplo:
    docker exec <container name> tail -f /var/log/syslog
  5. Compruebe que el contenedor funciona correctamente siguiendo estos pasos:
    1. Ejecute el contenedor, asegurándose de que expone el puerto 4414 en el host.
    2. Ejecute el mandato mqsilista para visualizar el estado del nodo de integración y compruebe que se lista como en ejecución.
    3. Acceda al syslog y compruebe que no hay ningún error.
    4. Conecte un navegador al host en el puerto que ha expuesto en el paso 1. Se visualiza la interfaz de usuario web de IBM Integration Bus .