Compose / Stack | Verwalten von Anwendungsstacks |
Hub | (öffentliche) Docker-Registry |
Swarm / Swarm Mode | Verwaltung von Container in Clustern |
Cloud | Hostinganbieter |
Maschine | Bereitstellung von Docker-Hosts |
Store | Bereitstellung zertifizierter Images |
Kinematic | Grafisches Verwaltungswerkzeug |
docker info [OPTIONS]
Zeigt Informationen über die Docker-Installation und docker ps [OPTIONS]
Zeigt Informationen für die Container z.B. Name, Image, Port ... an.
-a / --all | zeigt Informationen zu allen, auch inaktiven, Containern |
-l / --latest | zeigt Informationen zum letzten erstellten Container |
docker run [OPTIONS] IMAGE[:Tag] [COMMAND]
Name | --name [Name] (muss eindeutig im Host sein) |
---|---|
Startverhalten | -it (interaktives Terminal) /-d (Hintergrunddienst) |
Volumen-Mapping | -v Quellpfad:Zielpfad |
Port-Mapping | -p Container-Port:Host-Port |
Endverhalten | -rm Container direkt entfernen |
docker start [OPTIONS] CONTAINER
-a / --attach | Verbindung mit der Standardausgabe herstellen. |
-i / --interactive | Verbindung mit der Standardeingabe herstellen. |
docker stop [OPTIONS] CONTAINER
-t / --time | Zeit, in Sekunden, bis Container gekillt wird. |
docker attach [OPTIONS] CONTAINER
Stellt eine Verbindung mit der Standardausgabe des laufenden Containers her.
docker rm [OPTIONS] CONTAINER
-f / --force | Bricht den noch laufenden Container ab |
-v / --volumes | Löscht die mit dem Container verbundenen Volumes |
docker logs [OPTIONS] CONTAINER
docker images [OPTIONS]
-a / --all | Zeigt alle, auch Zwischencontainer, an |
-f / --filter | Filtert die Liste |
docker pull [OPTIONS] [Registry]IMAGENAME
Ist keine Registry angegeben, wird der Default i.d.R. Docker-Hub verwendet.
Beim Aktualisieren bleibt das vorhandene Image erhalten.
docker pull myregistry.local:5000/myuser/myimage
docker rmi [OPTIONS]
-f / --force | Erzwingt das Löschen |
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a / --author | Ersteller |
-m / --message | Commit message |
docker push [OPTIONS] [Registry]IMAGENAME[:TAG]
Vor der Übertragung in den Dockerhub ist eine Authentifizierung erforderlich.
Ist eine Auszeichnungssprache (ML) für den Aufbau eines Docker-Images.
Die Speicherung erfolgt als Textdatei.
FROM Basisimage[:TAG]
Imagename ggf. mit Tag auf welchem das eigene Image basieren soll
FROM ubuntu:16.10
LABEL maintainer Email
E-Mail-Adresse des Autors
LABEL maintainer "max@mustermann.de"
Veraltet: MAINTAINER
MAINTAINER Max Mustermann "max@mustermann.de"
RUN COMMAND
Befehl zur Ausführung im Container z.B. Installieren von Software.
RUN apt-get update
ENV VARIABLENNAME Wert
Definiert Variablen z.B. die Version oder das Datum der Aktualisierung, die auch innerhalb der Befehle verwendet werden können.
ENV REFRESHED_AT 2017-01-25
EXPOSE Portnummer
Definiert Ports, welche durch das Image bereitgestellt werden.
EXPOSE 8080
VOLUME Pfad
Definiert Volume (Verzeichnis), welche durch das Image bereitgestellt wird.
VOLUME ["/mydata"]
COPY Quellpfad Zielpfad
Kopiert Ordner / Dateien in das Image
COPY /Publish /MyApp
ADD Quellpfad / URL Zielpfad
Kopiert Ordner / Dateien in das Image.
Kann auch eine URL oder eine tar-Datei sein.
ADD /Publish /MyApp
WORKDIR Pfad
Definiert den Einstiegspfad für die Ausführung innerhalb des Containers.
WORKDIR /MyApp
ENTRYPOINT [COMMAND, ARGS]
Definiert den Startbefehl des Images inkl. Parameter.
ENTRYPOINT ["npm", "rum", "testapp"]
CMD COMMAND
Definiert den Startbefehl des Images inkl. Parameter.
Ein Überschreiben ist möglich.
CMD ["npm", "rum", "testapp"]
FROM fpommerening/spartakiade2017-rabbitmq:core-base
LABEL maintainer "frank@pommerening-online.de"
ENV REFRESHED_AT 2017-01-31
ENV Picflow_VERSION 0.0.1
COPY /app /home/
RUN set -x \
&& p7zip -d /home/picflow-webapp.7z \
&& mv /picflow-webapp/ /app/ \
&& apt-get purge -y --auto-remove ca-certificates wget p7zip
WORKDIR /app/
EXPOSE 5000
ENTRYPOINT ["dotnet", "WebApp.dll"]
Hauptziele: Übersicht erhöhen / Imagegröße reduzieren
$ docker run -d --name mongodb mongo
$ docker run -d --name apache link data:mongodb webapp
VERALTET
Das Networking löst das Konzept der Links zwischen Containern ab!
docker network ls [OPTIONS]
docker network inspect [OPTIONS] NETWORK
docker network create [OPTIONS] NETWORK
-d/--drive | Netzwerktreiber (none, host, bridge ...) |
--subnet | Subnetz z.B. 192.168.235.0/24 |
--ip-range | Definiert den zu vergebenden IP Bereich |
-o/-opt | Key / Value - Eintrag für spezielle Einstellung z.B. com.docker.network.driver.mtu": "1500" |
--label | Metadaten für das Netzwerk |
--ipv6 | aktiviert / deaktiviert IPv6 |
Zusammenfassung mehrerer Container zu einem Anwendungsstack
Format / Version | Docker-Version | Hinweise |
---|---|---|
3.5 | 17.12.0+ | Isolation |
3.3 | 17.06.0+ | Config / Secrets |
3.0 3.1 3.2 |
1.13.0+ 1.13.1+ 17.04.0+ |
Empfohlene Version Erlaubt Verknüpfung mit Docker Swarm |
2.1 | 1.12.0+ | Healthcheck |
2.0 | 1.10.0+ | Networks, Dependency |
1.0 | 1.9.1+ | in zukünftiger Version deprecated / veraltet |
Herkunft Images
BUILD
Image wird erst während des Starts erstellt.
build:
context: ./webapp
dockerfile: Dockerfile.local
image: webbapp:latest
Vorhandenes Image
gleiches Format wie beim FROM-Klausel des Dockerfile
image: user/web:latest
Portfreigaben
Port-Container:Port-Host
ports:
- 5000:5000
Hostname
hostname:Webserver1
Abhängigkeiten
Es werden die (Alias)name der Services verwendet.
depends_on:
- dbserver
Umgebungsvariable / Einstellungen
Format: KEY:VALUE
environment:
- setting1:value1
- setting2:value2
Datenspeicher
Datenspeicher werden zusätzlich im Bereich volumes definiert.
volumes:
- data1:/app/data
Netzwerkzuordnung
Netzwerke werden zusätzlich im Bereich networks definiert.
networks:
- frontend
Treiber
z.B. bridge oder overlay
driver: overlay
Optionen
driver_opts:
- opt1: "val1"
Treiber
i.d.R. Local
driver: overlay
Optionen
driver_opts:
- opt1: "val1"
version: "3"
services:
database:
image: mongodb:3.2
volumes:
- data:/var/mongo/data
networks:
- backend
webapp:
build:
context: ./webapp
ports: 5000:80
environment:
- DbConnectingString=mongodb://database
networks:
- backend
- frontend
networks:
backend:
frontend:
volumes:
data:
docker-compose [SUBCOMMAND] [OPTIONS]
Subbefehl | Optionen | Hinweise |
---|---|---|
pull | Lädt die im Anwendungsstack enthalten Images herunter | |
create | --no-cache [SERVICE...] | Erstellt das Image bzw. den alle Images des Stack |
up | -d [SERVICE] --build |
Erstellt / Lädt herunter / Startet einen Service inkl. Abhängigkeiten oder den gesamten Stack |
start | [SERVICE] | Startet einen Service |
Subbefehl | Optionen | Hinweise |
---|---|---|
stop | -t (timeout in s) [SERVICE] | Beendet einen Service |
down | --rmi / -v | Stoppt und entfernt Container, Netzwerke, images und Volumes |
rm | -v | Entfernt, nach Bestätigung, gestoppte Container und ggf. Volumes |
exec | SERVICE COMMAND | Führt den übergeben Befehl im Service aus |
top | [SERVICE] | Zeigt die Prozesse des Service bzw. des Anwendungsstack an |
curl -sSL get.docker.com | sh
sudo usermod -aG docker pi
sudo systemctl enable docker
sudo systemctl start docker
Container-Cluster über mehrere Docker-Hosts
Das Tool Docker Swarm Visualizer gestattet eine Übersicht der laufenden Services und Hosts.
Lizenz: Apache GitHub
Verfügbare Container:
docker swarm init [OPTIONS]
Nach erfolgreicher Erstellung werden der Token und Befehl zum Hinzufügen angezeigt.
docker swarm join [OPTIONS] HOST:PORT
-- token Zugriffstoken
docker swarm leave [OPTIONS]
--force, -f Erzwingt das Verlassung und ignoriert Warnungen WICHTIG: die Node muss noch mein Manager abgemeldet werden!
docker swarm join-token [OPTIONS] (worker|manager)
docker swarm Update [OPTIONS]
docker node ls [OPTIONS]
docker node inspect [OPTIONS] self|NODE
docker node ps [OPTIONS] [NODE]
docker node rm [OPTIONS] Node
docker node promote NODE
docker node demote NODE
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
--name | Name für den Service |
--network | Verwendetes Netzwerk |
--publish, -p | Veröffentlicht den Port |
--replicas | Zahl der gleichzeitig laufenden Instanzen |
docker service rm SERVICE
docker service ls [OPTIONS]
docker service inspect [OPTIONS] SERVICE
docker service scale SERVICE=ANZAHL
docker service logs [OPTIONS] SERVICE
Vorteile | Nachteile |
---|---|
|
|
Vorteile | Nachteile |
---|---|
|
|
Vorteile | Nachteile |
---|---|
|
|