Apache Karaf & Docker : distribution Vanilla et personnalisée

Apache Karaf & Docker : distribution Vanilla et personnalisée

Nous continuons la série d’article sur Apache Karaf™ 4.2.1 & Docker . Et cette semaine, nous nous focalisons sur la distribution Vanilla ainsi que la distribution personnalisée.

Adaptation de l’article :  « Apache Karaf & Docker» du blog Nanthrax écrit par Jean-baptiste Onofré (Technical Advisor)

yupiik-article-karaf-docker

Docker image utilisant la distribution Vanilla Karaf

Le premier usage de build.sh est de créer une image DOcker en utilisant une distribution officielle (« Vanilla ») disponible sur les miroirs Apache. Exemple : la création d’une image à l’aide de Apache Karaf 4.2.1 peut s’effectuer de la manière suivante :

assembly/docker/build.sh --from-release --karaf-version 4.2.1 --image-name karaf<br/>Downloading apache-karaf-4.2.1.tar.gz from http://mirrors.standaloneinstaller.com/apache/karaf/4.2.1/
Sending build context to Docker daemon  22.06MB
Step 1/10 : FROM java:8-jre-alpine
8-jre-alpine: Pulling from library/java
709515475419: Pull complete
38a1c0aaa6fd: Pull complete
cd134db5e982: Pull complete
Digest: sha256:6a8cbe4335d1a5711a52912b684e30d6dbfab681a6733440ff7241b05a5deefd
Status: Downloaded newer image for java:8-jre-alpine
 ---> fdc893b19a14
Step 2/10 : ENV KARAF_INSTALL_PATH=/opt
 ---> Running in dadbe0fbb5d7
Removing intermediate container dadbe0fbb5d7
 ---> 4d14737dd37d
Step 3/10 : ENV KARAF_HOME $KARAF_INSTALL_PATH/apache-karaf
 ---> Running in b146df1354a1
Removing intermediate container b146df1354a1
 ---> 27f504e74175
Step 4/10 : ENV PATH $PATH:$KARAF_HOME/bin
 ---> Running in f7e262e47d31
Removing intermediate container f7e262e47d31
 ---> aeb7757dee5c
Step 5/10 : ARG karaf_dist=NOT_SET
 ---> Running in d3d0ac0b66d8
Removing intermediate container d3d0ac0b66d8
 ---> 1f9456e1edfd
Step 6/10 : ADD $karaf_dist $KARAF_INSTALL_PATH
 ---> 828362c5401a
Step 7/10 : RUN set -x &amp;&amp;   ln -s $KARAF_INSTALL_PATH/apache-karaf* $KARAF_HOME
 ---> Running in f59a3e5139cd
ln -s /opt/apache-karaf-4.2.1 /opt/apache-karaf

Removing intermediate container f59a3e5139cd
---> b05d4af0df6b
Step 8/10 : COPY docker-entrypoint.sh /
---> 003ed84df94f
Step 9/10 : EXPOSE 8101 1099 44444 8181
---> Running in 35bceaa38fe9
Removing intermediate container 35bceaa38fe9
---> 439a85a3d6f0
Step 10/10 : ENTRYPOINT ["/docker-entrypoint.sh"]
---> Running in fa51274dbbf3
Removing intermediate container fa51274dbbf3
---> e595c47809e5
Successfully built e595c47809e5
Successfully tagged karaf:latest

On constate que build.sh a téléchargé automatiquement la distribution de la version 4.2.1 depuis un miroir Apache, de même que l’image Alpine Java de la base Docker. Anis, nous pouvons voir l’image dans notre Docker :

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
karaf              latest              e595c47809e5        4 minutes ago       133MB
java                8-jre-alpine        fdc893b19a14        18 months ago       108MB

Nous pouvons faire fonctionner un conteneur Docker en utilisant notre image Karaf. La première façon d’y parvenir est d’utiliser la commande docker run « classique »

docker run -p 1099:1099 -p 8101:8101 -t --name mycontainer karaf
Starting Apache Karaf
karaf: Ignoring predefined value for KARAF_HOME
Apache Karaf (4.2.1)
Hit '' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '' or type 'system:shutdown' or 'logout' to shutdown Karaf.
karaf@root()>

Nous pouvons constater le le conteneur suivant s’affiche :

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                 NAMES
477b3cec3b76        karaf             "/docker-entrypoint.…"   3 minutes ago       Up 3 minutes        0.0.0.0:1099->1099/tcp, 8181/tcp, 0.0.0.0:8101->8101/tcp, 44444/tcp   mycontainer

Lorsque vous utilisez docker run, vous devez vous rappeler d’exposer les ports réseau à l’aide de l’option -p. Lorsque vous exposez 8101, vous pouvez vous connecter au Karaf incluant le conteneur Docker qui utilise ssh ou bin/client Karaf.

Une alternative au docker run (ou docker start) est d’utiliser docker-compose. Apache Karaf fournit maintenant docker-compose.yml pour simplifier le démarrage et l’arrêt d’Apache Karaf dans docker.

Pour démarrer Apache Karaf Docker image, il suffit de faire :

docker-compose run karaf
Starting Apache Karaf
karaf: Ignoring predefined value for KARAF_HOME...

Le comportement est exactement le même qu’au moment de l’exécution du docker, mais la liaison des ports est configurée dans Karaf docker-compose.yml.

Vous pouvez également démarrer en mode  » démon  » (sans la console shell) en utilisant :

docker-compose up
Creating docker_karaf_1 …
Creating docker_karaf_1 … done
Attaching to docker_karaf_1
karaf_1  | Starting Apache Karaf

Vous pouvez arrêter un conteneur existant en utilisant $> docker-compose kill

Image Docker avec une distribution Karaf personnalisée

Vous avez créé votre propre distribution Karaf sur mesure et vous souhaitez créer une image Docker avec cette même distribution ? Avec le script build.sh, il suffit tout simplement de fournir l’archive de votre distribution personnalisée.

 ./build.sh --from-local-dist --archive /home/jbonofre/my-karaf.tar.gz --image-name my-karaf

Using karaf dist: /home/jbonofre/my-karaf-1.0.0.tar.gz

Sending build context to Docker daemon  22.11MB
Step 1/10 : FROM java:8-jre-alpine
 ---> fdc893b19a14
Step 2/10 : ENV KARAF_INSTALL_PATH=/opt
 ---> Running in 620e32d745a9
Removing intermediate container 620e32d745a9
 ---> f773a2c25001
Step 3/10 : ENV KARAF_HOME $KARAF_INSTALL_PATH/apache-karaf
 ---> Running in 2445bbea610d
Removing intermediate container 2445bbea610d
 ---> 1974f31ada89
Step 4/10 : ENV PATH $PATH:$KARAF_HOME/bin
 ---> Running in 20b5bc409c29
Removing intermediate container 20b5bc409c29
 ---> 3e73907f5b14
Step 5/10 : ARG karaf_dist=NOT_SET
 ---> Running in e7603a1c7117
Removing intermediate container e7603a1c7117
 ---> 5de9504336cc
Step 6/10 : ADD $karaf_dist $KARAF_INSTALL_PATH
 ---> 1eba7c16ffd0
Step 7/10 : RUN set -x &&   ln -s $KARAF_INSTALL_PATH/apache-karaf $KARAF_HOME
 ---> Running in d3c685bd2bcd
ln -s /opt/apache-karaf-4.2.2-SNAPSHOT /opt/apache-karaf
Removing intermediate container d3c685bd2bcd
---> 1e9306813e59
Step 8/10 : COPY docker-entrypoint.sh /
---> e28f024ad48e
Step 9/10 : EXPOSE 8101 1099 44444 8181
---> Running in 960627ec7597
Removing intermediate container 960627ec7597
---> 9a3d6017498d
Step 10/10 : ENTRYPOINT ["/docker-entrypoint.sh"]
---> Running in 9d7fc90c19c8
Removing intermediate container 9d7fc90c19c8
---> 98ee7d5ef992
Successfully built 98ee7d5ef992
Successfully tagged my-karaf:latest

Nous avons maintenant une image Karaf Docker avec notre distribution personnalisée :

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
my-karaf            latest              98ee7d5ef992        About a minute ago   133MB
java                8-jre-alpine        fdc893b19a14        18 months ago        108MB

Nous sommes dans la même configuration de départ : démarrer un conteneur Docker en utilisant  docker run ou docker-compose

Découvrez prochainement le dernier point sur les mises à jour d’Apache Karaf 4.2.1 : les images.

Bloqué dans vos roadmaps ?

Vous souhaitez former vos équipes ?

fr_FRFrançais
en_GBEnglish (UK) fr_FRFrançais