Docker-Befehle in der Praxis

This page is also available in English

Docker Container können mittels Terminal-Befehle gestartet, upgedatet und verwaltet werden. In dem Beitrag notiere ich Befehle die ich bisher für Docker benötigt habe und entsprechende Beispiele dazu:

Netzwerk erstellen

docker network create smart-home

Ein Netzwerk kann mehrere Container, die untereinander kommunizieren sollen, zusammenfassen.

Container starten

als Beispiel Conbee, siehe auch: conbee-2

 docker run -d \
   --name=deconz \
   --network=smart-home \
   -p=83:80 \
   --restart=always \
   -v /etc/localtime:/etc/localtime:ro \
   -v /docker/deCONZ/:/root/.local/share/dresden-elektronik/deCONZ \
   --device=/dev/ttyACM0 \
   -e DECONZ_DEVICE=/dev/ttyACM0 \
   marthoc/deconz

Volumes

Ordner des Host-Betriebssystems können mit dem Parameter -v in den Container gemappt werden:

   -v /docker/deCONZ/:/root/.local/share/dresden-elektronik/deCONZ

":ro" am Ende mappt den Ordner nur lesend

   -v /OrdnerNurLesend/:/OrdnerNurLesend:ro

Container-Parameter: Netzwerk

Der Parameter: --net=host verbindet die Netzwerkkarte direkt.

Als Alternative kann der Paramter 

-p=Externer_Port,Port_im_Container verwendet werden:

-p=83:80 würde also dann über die IP des Rechners mit dem Port 83 aufgerufen werden können und intern im Container wird Port 80 verwendet.

Zusätzlich kann mit --network=netzwerkname ein bestimmtes zuvor mit "docker network create" erstelltes Netzwerk verwendet werden. Container innerhalb eines Netzwerkes können nicht nur über die IP, sondern auch über deren Namen (--name) aufgerufen werden: Für den Verbindungsaufbau wird dann schlicht der Name und Port des Containers verwendet.

Container anzeigen

user@rechner:/docker$ docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
xxxxxxxxxxxx        syncthing/syncthing:latest               "/bin/entrypoint.sh …"   12 minutes ago      Up 12 minutes (healthy)                                              festive_chandrasekhar
xxxxxxxxxxxx        nginx                                    "/docker-entrypoint.…"   4 days ago          Up 12 minutes             80/tcp                                     nextcloud_webserver
xxxxxxxxxxxx        nextcloud:fpm                            "/entrypoint.sh php-…"   4 days ago          Up 12 minutes             9000/tcp                                   nextcloud_fpm
xxxxxxxxxxxx        nginx                                    "/docker-entrypoint.…"   4 days ago          Up 12 minutes             80/tcp                                     laraveldev_webserver
xxxxxxxxxxxx        mediawiki                                "docker-php-entrypoi…"   4 days ago          Up 12 minutes             80/tcp                                     mediawiki
xxxxxxxxxxxx        laravelapp.dockerfile                    "docker-php-entrypoi…"   4 days ago          Up 12 minutes             9000/tcp                                   laravelapp
xxxxxxxxxxxx        phpmyadmin/phpmyadmin                    "/docker-entrypoint.…"   4 days ago          Up 12 minutes             0.0.0.0:8081->80/tcp                       phpmyadmin
xxxxxxxxxxxx        onlyoffice/documentserver                "/bin/sh -c /app/ds/…"   4 days ago          Up 12 minutes             80/tcp, 443/tcp                            onlyoffice
xxxxxxxxxxxx        jrcs/letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   4 days ago          Up 12 minutes                                                        letsencrypt-companion
xxxxxxxxxxxx        mariadb                                  "docker-entrypoint.s…"   4 days ago          Up 12 minutes             3306/tcp                                   mediawikidb
xxxxxxxxxxxx        jwilder/nginx-proxy:alpine               "/app/docker-entrypo…"   4 days ago          Up 12 minutes             0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   proxy
xxxxxxxxxxxx        mariadb                                  "docker-entrypoint.s…"   4 days ago          Up 12 minutes             3306/tcp                                   db
xxxxxxxxxxxx        mariadb                                  "docker-entrypoint.s…"   4 days ago          Up 12 minutes             3306/tcp                                   laraveldb
xxxxxxxxxxxx        redis                                    "redis-server --appe…"   4 days ago          Up 12 minutes             0.0.0.0:6379->6379/tcp                     redis
xxxxxxxxxxxx        laradock_nginx                           "/bin/bash /opt/star…"   3 months ago        Up 11 minutes             0.0.0.0:90->80/tcp, 0.0.0.0:444->443/tcp   laradock_nginx_1
xxxxxxxxxxxx        laradock_php-fpm                         "docker-php-entrypoi…"   3 months ago        Up 11 minutes             9000/tcp                                   laradock_php-fpm_1
xxxxxxxxxxxx        laradock_phpmyadmin                      "/run.sh supervisord…"   3 months ago        Up 12 minutes             9000/tcp, 0.0.0.0:8082->80/tcp             laradock_phpmyadmin_1
xxxxxxxxxxxx        laradock_workspace                       "/sbin/my_init"          3 months ago        Up 12 minutes             0.0.0.0:2222->22/tcp                       laradock_workspace_1
xxxxxxxxxxxx        laradock_mariadb                         "docker-entrypoint.s…"   3 months ago        Up 12 minutes             0.0.0.0:3306->3306/tcp                     laradock_mariadb_1
xxxxxxxxxxxx        laradock_redis                           "docker-entrypoint.s…"   3 months ago        Up 12 minutes             0.0.0.0:6380->6379/tcp                     laradock_redis_1

Container stoppen

docker stop containername

alle Container stoppen

docker stop $(docker ps -a -q)

Container updaten

docker pull IMAGENAME
docker stop CONTAINERNAME
docker rm CONTAINERNAME
docker run CONTAINERNAME -parameters

Docker-Compose Container updaten

docker-compose pull
docker-compose up -d

Container entfernen

docker rm containername

Netzwerk anzeigen

user@rechner:/docker$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
xxxxxxxxxxxx        docker_default      bridge              local
xxxxxxxxxxxx        host                host                local
xxxxxxxxxxxx        laradock_backend    bridge              local
xxxxxxxxxxxx        laradock_default    bridge              local
xxxxxxxxxxxx        laradock_frontend   bridge              local
xxxxxxxxxxxx        nginx-proxy         bridge              local
xxxxxxxxxxxx        none                null                local

Detail zu einem Netzwerk anzeigen

docker network inspect docker_default

Bash eines Containers aufrufen

docker exec -it containername /bin/bash

Bash Befehle innerhalb: mysql, mariadb DB-Restore

gunzip < '/daten/backup.gz' | docker exec -i laradock_mariadb_1 /usr/bin/mysql -u root --password=password dbname

Wartung

nicht benötigte Docker-Images entfernen

docker image prune -a --force

Prune: nicht verwendete Daten löschen

docker system prune --volumes -f 

Überwachen / Status

Performance

Einen Überblick über CPU / RAM und Netzwerk bietet der Befehl docker stats

docker stats

Ausgabe der einzelnen Container anzeigen

docker logs -f containername

Troubleshooting

Docker reagiert nicht mehr

wenn z.B. Befehle wie docker ps nicht mehr reagieren, kann der Fehler über den Befehl dockerd --debug eingegrenzt werden:

sudo dockerd --debug
INFO[2020-12-27T11:58:52.395359797+01:00] Starting up                                  
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid

Die Datei kann mit 

sudo rm /var/run/docker.pid

gelöscht werden.

failed to start daemon: error while opening volume store metadata database: timeout

Mit Hilfe folgender Befehle konnte ich Docker wieder reparieren:

Alle Docker-Prozesse stoppen:

ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh

Metadata.db löschen

sudo rm /var/lib/docker/volumes/metadata.db

Den Status anzeigen

systemctl status docker

Docker neu installieren

sudo apt-get remove docker-ce
sudo apt-get install docker-ce
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


Top-Artikel in diesem Bereich

Preview ioBroker installieren - Docker

ioBroker installieren - Docker

geändert: 12.11.2020 von Bernhard (Erstveröffentlichung: 06.11.2020)

Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.  ... weiterlesen

Preview Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ

geändert: 09.03.2022 von Bernhard (Erstveröffentlichung: 06.11.2020)

Dank zahlreicher Integrationsmöglichkeiten ist Home-Assistant eine einfache Plattform für das Steuern verschiedenster Smart-Home Geräte. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. Während ich für ioBroker noch am Suchen war, welches Frontend ich für meine Dashboards verwenden könnte, hatte ich mit Home-Assistant Out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant können einfach in der GUI zusammengeklickt... ... weiterlesen

Bitwarden in Docker betreiben - Setup Schritt für Schritt

Bitwarden in Docker betreiben - Setup Schritt für Schritt

erstellt: 28.02.2022 von Bernhard

Bitwarden ist ein webbasierter Passwort-Manager, ähnlich LastPass, aber Open Source und der Möglichkeit diesen selbst zu betreiben (hosten). Wie sich Bitwarden im Vergleich zu anderen Passwortmanagern einordnet, habe ich auf folgender Seite überlegt: Passwortmanager sicher? KeePass vs. LastPass vs. Bitwarden. ... weiterlesen


Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details