Commands
Images
docker image ...
image ls
- Images auflisten
docker image ls
docker image list
docker images
image pull
- Image herunterladen
docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull
Beispiel:
docker pull ubuntu:latest
image rm
- Image löschen
docker image rm [OPTIONS] IMAGE [IMAGE...]
docker image remove my-image
docker rmi my-image
Beispiel:
docker rmi ubuntu:latest
image inspect
- Image untersuchen
docker image inspect [OPTIONS] IMAGE [IMAGE...]
Beispiel:
Ausgabe der im Dockerfile mit LABEL
definierten Labels
docker image inspect -f "{{json .Config.Labels}}" mywebapp
Container
docker container ...
container ls
- Container auflisten
Die laufenden Container auflisten:
docker container ls
docker container list
docker container ps
docker ps
Argument | Bedeutung |
---|---|
-a | zeigt alle Container (auch gestoppte) |
container run
- Container erstellen
- wurde der Container noch nicht heruntergeladen, wird dies automatisch erledigt
docker container run [OPTIONS] IMAGE:TAG [COMMAND] [ARG....]
docker run my-image
TAG
ist dabei die Version, die (heruntergeladen und) verwendet wird.
Beispiel:
docker run -it --name my-ubuntu-container ubuntu:latest
docker run --name my-apache -p 5000:80 -d httpd
docker run -d --name mariadb-test2 -v myvolume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=geheim mariadb
Argument | Bedeutung |
---|---|
--name ... | Namen für Container. Ist dieser nicht gesetzt, wird automatisch ein fantasievoller Name gewählt |
--rm | löscht den Container automatisch nach der Ausführung |
-it | interaktiv, man erhält interaktive Shell innerhalb des Containers |
-d | Detach, Ausführung des Containers im Hintergrund, überschreibt -it |
-p /--publish HOST-PORT:CONTAINER-PORT | Veröffentlichung eines Ports eines Containers auf dem Host |
-e /--env KEY=VALUE | Umgebungsvariablen des Containers setzen |
-v /--volume hostdir:containerdir /volume:containerdir | bindet ein Volume an den Container |
--network ... | Angabe des Netzwerks |
--ip=... | IPv4-Adresse für Container |
--ip6=... | IPv6-Adresse für Container |
container start
- Container starten
docker start my-container
Für Identifikation des Containers können folgende Informationen verwendet werden:
- Name
- ganze ID
- erste, eindeutige Zeichen der ID
Argument | Bedeutung |
---|---|
-i | startet interaktive Shell |
container stop
- Container stoppen
docker stop my-container
container rm
- Container löschen
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
docker container remove my-container
docker rm my-container
container exec
- Interaktive Shell innerhalb eines Containers
Eine interaktive Shell innerhalb eines Containers wird mit dem Argument -it
gestartet.
Auch existiert folgender Befehl, um eine interaktive Shell in einem bereits gestarteten Container zu starten:
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec my-container
Beispiel:
docker container exec -it my-container /bin/bash
Argument | Bedeutung |
---|---|
-i | Aktivierung des interaktiven Modus |
-t | Zuweisung eines virtuellen Terminals |
Meistens werden die Argumente -i
und -t
zusammen verwendet: -it
.
Interaktive Shell verlassen
Die interaktive Shell (2. Terminal) verlassen:
exit
oder CTRL
+C
Volumes
docker volume ...
volume ls
- Volumes auflisten
docker volume ls
docker volume list
volume create
- Volumes erstellen
docker volume create [OPTIONS] [VOLUME]
Beispiel, benanntes Volume erstellen:
docker volume create data
Nun kann das Volume mit -v
beim Erstellen eines Containers mit einem Container-Pfad verknüpft werden:
docker run -d -v data:/world busybox ls /world
Das separate Erstellen eines Volumes mit docker volume create
ist nicht notwendig,
da Docker bei docker run
mit dem Parameter -v
automatisch ein Volume erstellt, wenn es nicht existiert.
volume inspect
- Untersuchung eines Volumes
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
Standard-Befehl:
docker volume inspect myvolume
Ausgabe:
[
{
"CreatedAt": "2020-04-19T11:00:21Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
"Name": "myvolume",
"Options": {},
"Scope": "local"
}
]
Argument | Beschreibung |
---|---|
-f | Filterung von JSON-Elementen |
Filterung
Eigenschaft | Beschreibung |
---|---|
Mountpoint | Verzeichnis, indem Daten des Volumes gespeichert sind |
Name | Name des Volumes |
Beispiel:
docker inspect -f '{{.Mountpoint}}' my-volume
inspect -f '{{.Mounts}'
- Volumes in Host-Ordner ansehen
Das Volume des Containers befindet sich auf dem Host unter dem zweiten Pfad:
docker inspect -f '{{.Mounts}' my-container
Mit sudo su
kommt man in eine privilegierte Subshell.
Sonst besitzt man keine Berechtigungen für den Docker-Ordner.
sudo su
cd /var/lib/docker/volumes/my-volume
Inspect
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Filterung
-f Wert | Bedeutung |
---|---|
'{{.Mounts}}' | Anzeige aller Volumes |
'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' | Anzeige der IP-Adresse |
Beispiele:
docker inspect -f '{{.Mounts}}' my-container
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
Link:
Network
docker network ...
network create
- Netzwerk erstellen
Erstellt ein neues Docker-Netzwerk
docker network create [OPTIONS] NETWORK
Beispiel:
docker network create \
--driver=bridge \
--subnet=172.28.0.0/16 \
--ip-range=172.28.5.0/24 \
--gateway=172.28.5.254 \
bridge-1
Argument | Bedeutung |
---|---|
--gateway | IPv4 oder IPv6 Gateway für das Master-Subnet, kommt nach --subnet |
--subnet | Netzwerk-Segment als Subnetz im CIDR-Format |
network ls
- Netzwerke auflisten
docker network ls [OPTIONS]
docker network list [OPTIONS]
Beispiel:
docker network ls --filter id=63d
NETWORK ID NAME DRIVER SCOPE
63d1ff1f77b0 dev bridge local
Argument | Bedeutung |
---|---|
-f , --filter key=value | Filterung |
network connect
- Verbinden
Verbindet einen Container mit einem bestehenden Netzwerk.
docker network connect [OPTIONS] NETWORK CONTAINER
Beispiel:
docker network connect --ip 10.10.36.122 my-network my-container
Argument | Bedeutung |
---|---|
--ip | IPv4-Adresse für Container |
network disconnect
- Trennen
Trennt einen Container von einem Netzwerk.
docker network disconnect [OPTIONS] NETWORK CONTAINER
Beispiel:
docker network disconnect multi-host-network container1
Argument | Bedeutung |
---|---|
-f , --force | zwingt den Container zur Trennung |
network rm
- Entfernen
docker network rm NETWORK [NETWORK...]
docker network remove NETWORK [NETWORK...]
network inspect
- Network Inspect
Zeigt Details zu einem Netzwerk an (z.B. verbundene Container, Einstellungen, ...).
docker network inspect [OPTIONS] NETWORK [NETWORK...]
Argument | Bedeutung |
---|---|
-f , --format | Formatierung |
network prune
- Ungenutzte Netzwerke löschen
Entfernt alle Netzwerke, welche nicht von Containern genutzt werden.
docker network prune [OPTIONS]
Build
buildx build
- Images aus Dockerfile erstellen
Bildet ein Image aus dem Dockerfile namens Dockerfile
im angegebenen Verzeichnis.
docker buildx build [OPTIONS] PATH | URL | -
docker build
docker builder build
docker image build
docker buildx b
Beispiel:
docker build -t hello1 .
Argument | Bedeutung |
---|---|
-t , --tag name:tag | Angabe eines Namens und optional eines Tags |
CLI reference: dockerdocs - CLI Reference - docker buildx build
Login
- Anmeldung an einem Registry
docker login [OPTIONS] [SERVER]
Beispiel:
docker login -u <username> -p <password>
docker login -u <username> -p <password> registry.example.com
Logout
- Abmeldung von einem Registry
docker logout [SERVER]
Beispiel:
docker logout localhost:8080
docker logout registry.example.com
docker logout https://hub.docker.com/
Sonstige
hostname
- IP-Adresse
Um die vergebene IP-Adresse eines Containers zu erhalten, gibt es folgende Wege:
docker container exec -it my-container /bin/bash
hostname -I
Beispiele
MySQL
docker run --name gbsdb -d /
--network net --ip 192.168.1.2 /
-v volumename:/var/lib/mysql /
-e MYSQL_DATABASE=joomla_db -e MYSQL_ROOT_PASSWORD=-gbs- /
mysql:8
phpMyAdmin
docker run -d --name phpmyadmin --network net /
-p 8080:80 /
-e PMA_HOST=gbsdb /
phpmyadmin/phpmyadmin
Joomla
docker network create \
--subnet 192.168.1.0/24 \
--gateway 192.168.1.1 \
net
docker run --name mysqldb -d \
--network net --ip 192.168.1.2 \
-v databases:/var/lib/mysql \
-e MYSQL_DATABASE=joomla_db \
-e MYSQL_USER=user \
-e MYSQL_PASSWORD=password \
-e MYSQL_ROOT_PASSWORD=password \
mysql:8
docker run --name phpmyadmin -d \
--network net \
-p 7000:80 \
-e PMA_HOST=mysqldb \
phpmyadmin/phpmyadmin
docker run --name joomla -d \
--network net \
-v joomladata:/var/www/html \
-p 8080:80 \
-e JOOMLA_DB_HOST=mysqldb:3306 \
-e JOOMLA_DB_NAME=joomla_db \
-e JOOMLA_DB_USER=user -e JOOMLA_DB_PASSWORD=password \
joomla
WordPress
docker network create \
--subnet 192.168.1.0/24 --gateway 192.168.1.1 \
net
docker container run --name mariadb -d \
--network net --ip 192.168.1.2 \
-v databases:/var/lib/mysql \
-e MARIADB_ROOT_PASSWORD=password \
-e MARIADB_USER=wordpress \
-e MARIADB_PASSWORD=password \
-e MARIADB_DATABASE=wordpressdb \
mariadb:latest
docker run --name phpmyadmin -d \
--network net \
-p 7000:80 \
-e PMA_HOST=mariadb \
phpmyadmin/phpmyadmin
docker container run --name wordpress -d \
--network net \
-e WORDPRESS_DB_HOST=mariadb:3306 \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=password \
-e WORDPRESS_DB_NAME=wordpressdb \
-p 8080:80 \
wordpress
Hinweis: MariaDB erstellt die Datenbank nur bei der ersten Ausführung (wenn /var/lib/mysql bzw. das Volume leer ist). Wenn das Datenbank-Volume bereits Daten von einer früheren MariaDB-Instanz enthält, wird die Variable
MARIADB_DATABASE
ignoriert.
Vaultwarden
docker run -d --name vaultwarden \
-v vaultwarden:/data/ \
-p 8080:80 \
vaultwarden/server:latest
Filebrowser
Dies funktioniert mit den Daten, jedoch nicht mit den Konfigurationsdateien und der Datenbank:
docker run \
--name filebrowser \
-v /home/vmadmin/Documents/filebrowser:/srv \
-p 8081:80 \
--rm \
filebrowser/filebrowser
Funktioniert nicht ganz:
docker run \
-v $(pwd)/Documents/filebrowser:/srv \
--mount type=bind,source="$(pwd)/Documents/filebrowser/filebrowser.db:/database.db \
--mount $(pwd)/Documents/filebrowser/.filebrowser.json:/.filebrowser.json \
-p 8080:80 \
filebrowser/filebrowser
docker run \
--name filebrowser \
-v /home/vmadmin/Documents/filebrowser:/srv \
-v /home/vmadmin/Documents/filebrowser/filebrowser.db:/database.db \
-v /home/vmadmin/Documents/filebrowser/.filebrowser.json:/.filebrowser.json \
-p 8081:80 \
--rm \
filebrowser/filebrowser