Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag....

24
Docker Trickkiste Lightningtalk auf der FOSSGIS 2019 in Dresden

Transcript of Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag....

Page 1: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker Trickkiste

Lightningtalk auf der FOSSGIS 2019 in Dresden

Page 2: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker Trickkiste

Mit Dank anJohannes Kröger

für das tolle Format “Trickkiste”!

Page 3: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker Basics

Praktische Kommandos für jeden Tag

Page 4: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker run

Den Container nach dem Beenden löschen

docker run --rm alpine

Page 5: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

.dockerignore● Funktioniert wie .gitignore für die

Buildumgebung von Docker● Saubere Buildumgebung● Schutz vor überschreiben● Schutz vor ungewollten Daten=> Schnellere Builds

Page 6: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

.dockerignoreBeispiel

node_modules/coverage/*.heapdumpprod.pem*.tmp

Page 7: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker Labels

Stets die Übersicht behalten

Page 8: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker LabelsWas kann Labels haben?

● Images● Container● Volumes● Networks

Page 9: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Dockerfile

Images Labels gebenFROM node:latestLABEL key=value

LABEL

Page 10: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker build

Images Labels geben

docker build --label key=value

Page 11: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker run

Container Labels geben

docker run --label key=value

Page 12: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker-composeContainer Labels geben

services: myservice: labels: key: value

Page 13: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Nach Labels filtern

Container hat ein Labeldocker ps \ --filter label=key

Page 14: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Nach Labels filtern

Container hat bestimmten Wert im Labeldocker ps \ --filter label=key=value

Page 15: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Labels ausgeben

Label eines Containers ausgebendocker ps \ --format '{{.Label "key"}}'

Page 16: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Konfiguration mit LabelsTraefik konfigurieren mit Labels

mapproxy-service: image: yagajs/mapproxy expose: [8080] labels: traefik.enable: "true" traefik.port: "8080"

Page 17: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Docker Buildkit

Dockers zukünftige Features schon heute

Page 18: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

RUN mit mounts# syntax=docker/dockerfile:experimentalFROM node

RUN --mount=type=cache,target=/var/lib/apt/lists/ set -x \ && apt-get update \ && apt-get install curl -y

Page 19: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

Multistage buildsFROM node as builder

RUN set -x \ && apt-get update \ && ...

FROM nodeCOPY --from=builder /path/from /path/to

Page 20: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

DockerfileSo wenige Build-Steps wie möglich,

so viele wie nötigFROM node:latestRUN apt-get install …COPY package.json /my/appRUN npm installCOPY . /my/app/

Page 21: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

DockerfileSo wenige Build-Steps wie möglich,

so viele wie nötigFROM node:latestRUN apt-get install …COPY package.json /my/appRUN npm installCOPY . /my/app/

Page 22: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

DockerfileSo wenige Build-Steps wie möglich,

so viele wie nötigFROM Basis-ImageRUN System AbhängigkeitenCOPY Abhängigkeiten unserer AnwendungRUN Installation der AbhängigkeitenCOPY Sonstiger Quellcode

Page 23: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker build

Image komplett neu bauen

docker build --no-cache [...]

Page 24: Docker Trickkiste - pretalx · 2019-03-22 · Docker Basics Praktische Kommandos für jeden Tag. docker run Den Container nach dem Beenden löschen docker run --rm alpine.dockerignore

docker build

Basis Image updaten

docker build --pull [...]