Docker-Befehle in der Praxis
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

{{percentage}} % positiv

DANKE für deine Bewertung!

ioBroker installieren - Docker
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

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
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 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