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
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
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
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
Prune: nicht verwendete Daten löschen
docker system prune --volumes -f

{{percentage}} % positiv
