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

docker: Are you trying to mount a directory onto a file (or vice-versa)?

Vor kurzem bekam ich beim Versuch, eine Datei von meinem Windows-Host-System in einen Docker Container über dem -v Parameter zu mounten, diese Fehlermeldung:

docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused : … : Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

Mein ursprüngliches Kommando lautete:

docker run -it -v /C/some/path/file.conf:/target/path/file.conf <image_name>

Die Lösung für dieses Problem ist folgende:

  • Erstmal den Container löschen, den ich versucht hatte zu starten: docker rm -f
  • Dockereinstellungen starten (in diesem Fall mit der rechten Maustaste über die Symbolleiste)
  • In dem Fenster mit den Dockereinstellungen auf den Reiter “Shared Drives” wechseln
  • In dem Fenster auf “Reset credentials” drücken
  • Die entsprechende Festplatte wieder aktivieren (in diesem Fall C:)
  • Auf “Apply” drücken und das Fenter schließen
  • Den Dockerdienst neu starten
  • Den docker-Befehl nochmals ausführen.

Quellen

https://stackoverflow.com/questions/45972812/are-you-trying-to-mount-a-directory-onto-a-file-or-vice-versa

yum Fehler: docker-ce benötigt container-selinux >= 2.9

Kürzlich wollte ich einen RedHat-Server einrichten und habe dafür docker auf dem Server installieren wollen. Beim Versuch, docker zu installieren bekam ich folgende Fehlermeldung:

Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 0:18.06.1.ce-3.el7 will be installed
--> Processing Dependency: container-selinux >= 2.9 for package: docker-ce-18.06.1.ce-3.el7.x86_64
--> Finished Dependency Resolution
Error: Package: docker-ce-18.06.1.ce-3.el7.x86_64 (docker-ce-stable)
           Requires: container-selinux >= 2.9
**********************************************************************
yum can be configured to try to resolve such errors by temporarily enabling
disabled repos and searching for missing dependencies.
To enable this functionality please set 'notify_only=0' in /etc/yum/pluginconf.d/search-disabled-repos.conf
**********************************************************************

Error: Package: docker-ce-18.06.1.ce-3.el7.x86_64 (docker-ce-stable)
           Requires: container-selinux >= 2.9
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Die Lösung hierbei war, dass ich mit Hilfe des Subscription-Managers das Repository rhel-7-server-extras-rpms aktivieren musste:

sudo subscription-manager repos --enable=rhel-7-server-extras-rpms

Danach hat die Installation von docker wunderbar funktioniert.

Version in “./docker-compose.yml” is unsupported.

Ich habe heute etwas mit Fossology gespielt. Genauer gesagt, wollte ich Fossology in Docker Containern starten und zwar mit Hilfe der Dateien, die von dem Projekt Fossology bereit gestellt werden.

Also fing ich an die entsprechenden Befehle in die Kommandozeile zu tippen:

$ git clone https://github.com/fossology/fossology.git
$ cd fossology
$ sudo docker-compose up

Beim letzten Befehl kam plötzlich eine Fehlermeldung:

ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file

Mit Hilfe von

$ sudo docker-compose -v

docker-compose version 1.8.0, build unknown

fand ich heraus, dass die installierte docker-compose Version zu alt für die docker-compose.yml war, die in dem Fossology-Projekt lag. Also musste ich erstmal docker-compose updaten:

$ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Danach konnte ich Fossology ohne Probleme in Docker Containern starten.