Mit docker-compose ein docker Netzwerk erstellen

Mit docker-compose lassen sich mehrere Container auf einmal starten. Man kann damit auch ein docker Netzwerk erstellen. Mit der docker-compose Version 3.5 oder höher kann man auch einen eigenen Namen für das Netzwerk angeben. Hier sieht man eine docker-compose.yml Datei, die zwei Container startet und ein docker Netzwerk erstellt. Den beiden Containern habe ich jetzt die Namen custom1 und custom2 gegeben. Das Netzwerk heißt hier my-own-network-name. Damit beide Container nach dem Start nicht gleich wieder geschlossen werden, läuft ein unendlicher sleep Prozess in ihnen. Für einfache Beispiele sollte diese docker-compose.yml gut genug sein.

version: '3.5'

services:
    custom1:
        container_name: custom1
        image: centos:latest
        entrypoint:
            - sleep
            - inf
        networks:
            - my-own-network-name
    custom2:
        container_name: custom2
        image: centos:latest
        entrypoint:
            - sleep
            - inf
        networks:
            - my-own-network-name
networks:
    my-own-network-name:
         name: my-own-network-name

Wenn man nun also die Kommandos:

docker-compose up -d
docker network ls

ausführt, sieht man das neu erstellte docker Netzwerk:

Um die erstellten Container und das docker Netzwerk zu löschen, reicht das Kommando

docker-compose down

Caused by: java.lang.NoClassDefFoundError: com/cloudbees/hudson/plugins/folder/properties/FolderCredentialsProvider

Ich hatte kürzlich Jenkins frisch aufgesetzt und die empfohlenen Plugins installiert. Als ich ein Multibranch Pipeline Projekt erstellt hatte und konfigurieren wollte, ging nichts mehr. Ich konnte nichts konfigurieren und bekam zudem diese Fehlermeldung zu Gesicht:

org.apache.commons.jelly.JellyTagException: jar:file:/root/.jenkins/war/WEB-INF/lib/jenkins-core-2.176-SNAPSHOT.jar!/lib/hudson/actions.jelly:39:70: <st:include> com/cloudbees/hudson/plugins/folder/properties/FolderCredentialsProvider at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:745) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:289) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
...
Caused by: java.lang.NoClassDefFoundError: com/cloudbees/hudson/plugins/folder/properties/FolderCredentialsProvider at java.lang.Class.getDeclaringClass0(Native Method) at java.lang.Class.getDeclaringClass(Class.java:1235) at java.lang.Class.getEnclosingClass(Class.java:1277) at com.cloudbees.plugins.credentials.CredentialsStore.<init>(CredentialsStore.java:102)
...
Caused: javax.servlet.ServletException at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:119) at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:146) at org.kohsuke.stapler.IndexViewDispatcher.dispatch(IndexViewDispatcher.java:30) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747)

Die wichtige Fehlermeldung ist hier fett hervorgehoben. Ursache für dieses Problem ist, dass ein Plugin nicht installiert gewesen ist: Das Cloudbees Credentials Plugin.