Wer Docker unter Debian installieren
möchte, findet das Paket (docker-ce) nicht im Debian Repository,
sondern muss es von einem Docker-Server installieren. Die
entsprechende Installationsanleitung findet sich
hier. Es gibt allerdings nur Pakete für die vergangenen
Stable-Releases von Debian (Stretch, Jessie, Wheezy), nicht für das
aktuelle Testing-Release (Buster). Das macht aber nichts, das Paket
für das letzte Stable-Release (Stretch) funktioniert auch unter
Buster.
Installation:
# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# apt-key fingerprint 0EBFCD88
# vi /etc/apt/sources.list # die folgende Zeile hinzufügen
deb [arch=amd64] https://download.docker.com/linux/debian stretch stable
# apt-get update
# apt-get install docker-ce
Test:
Verzeichnisbaum mit den Docker-Bewegungsdaten:
Füge user USER zur Gruppe docker hinzu, damit dieser neben root
ebenfalls mit Docker arbeiten kann:
Container starten:
Container stoppen:
Liste der aktuell ausgeführten Container:
Liste aller Container, einschließlich der beendeten:
Lösche einen oder mehrere Container:
$ docker rm CONTAINER ...
Lösche alle unbenutzten oder unreferenzierten Images, Container,
Volumes und Networks:
Kommando im Container ausführen:
$ docker exec CONTAINER COMMAND ARG ...
Z.B.
$ docker run debian -d sleep 120 # -d = detach
06f0ee0e2256c5d531f8134f1bbb8f91b7189483c4ab21c4fb7807384420b1bf
$ docker exec 06f0ee0e2256 cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 06f0ee0e2256
Stdin und stdout mit dem Container verbinden:
$ docker run -it IMAGE # -i = stdin, -t = stdout
Einen internen Port auf einen externen Port abbilden:
$ docker run -p PORT_EXTERN:PORT_INTERN IMAGE
PORT_INTERN: Port innerhalb des Containers
PORT_EXTERN: Port auf dem Docker-Host
Ein internes Verzeichnis auf ein externes Verzeichnis abbilden:
$ docker run -v DIR_EXTERN:DIR_INTERN IMAGE
DIR_EXTERN: Verzeichnis auf dem Docker-Host
DIR_INTERN: Verzeichnis innerhalb des Containers
Environement-Variablen setzen:
$docker run -e NAME=VALUE IMAGE
(die definierten Enviroment-Variablen: docker inspect IMAGE)
Logs auf stdout ausgeben:
Image herunterladen:
Liste der lokal vorrätigen Images:
Lösche ein oder mehrere Images:
Image-Konfiguration ansehen:
Image in TAR speichern:
$ docker image save IMAGE >FILE.tar
Image in Dateisystem entpacken (mit dem Zusatzprogramm
undocker):
$ docker image save IMAGE | undocker -o DIR
Image im globalen Repository (Docker Hub) suchen:
Eigenes Image erstellen:
$ mkdir my-app
$ cd my-app
$ vi Dockerfile
...
$ docker build -t my-app .
Beispiel:
FROM debian
RUN apt-get update
RUN apt-get -y install python3
RUN apt-get -y install python3-pip
RUN pip3 install flask
RUN pip3 install flask-mysql
COPY . /opt/www
ENTRYPOINT FLASK_APP=/opt/www/app.py flask run --host=0.0.0.0
Image erzeugen:
docker build . -t ACCOUNT/NAME
Beispiel:
$ docker build . -t s31tz/webapp
$ docker run -p 5000:5000 s31tz/webapp
Erzeugungshistorie anzeigen:
Alle Images entfernen, die von keinem Container genutzt werden:
Lokales Netz (Class B) erzeugen:
$ docker network create NAME
Liste der Netze:
Lösche ein oder mehrere Netze:
Globales Repository von Docker-Images (Account ist kostenlos):
Doku zu den offiziellen Docker-Images:
Links