21
Tipps und Tricks im Umgang mit Docker Nicholas Dille Microsoft MVP & Docker Captain

Tipps und Tricks im Umgang mit Docker

Embed Size (px)

Citation preview

Page 1: Tipps und Tricks im Umgang mit Docker

Tipps und Tricks im Umgang mit Docker

Nicholas Dille

Microsoft MVP & Docker Captain

Page 3: Tipps und Tricks im Umgang mit Docker
Page 4: Tipps und Tricks im Umgang mit Docker

CI/CD

Dockerfile Image Registry

docker-compose.yml

Repository

MonitoringData

Orchestration

Host

Container

Service

Secrets

Page 5: Tipps und Tricks im Umgang mit Docker

Reproduzierbarkeitdurch

Automatisierung

Dockerfile / docker-compose / docker-machine / CI/CD

Page 6: Tipps und Tricks im Umgang mit Docker

FROM ubuntu

FROM ubuntu:xenial-20170915

Niemals :latest verwenden / Reproduzierbarkeit sicherstellen

Page 7: Tipps und Tricks im Umgang mit Docker

RUN apt-get update \

&& apt-get –y upgrade

Nicht alle Pakete aktualisieren

Page 8: Tipps und Tricks im Umgang mit Docker

>

Ableiten von Code nicht von Images / Ausnahme für offizielle Images

Page 9: Tipps und Tricks im Umgang mit Docker

Ableiten von Code nicht von Images / Ausnahme für offizielle Images

Image

Layer 1

Layer 2

Layer 3

Page 10: Tipps und Tricks im Umgang mit Docker

FROM ubuntu:xenial-20170915

ENV http_proxy=“http://1.2.3.4:8080“

RUN apt update

docker build --build-arg http_proxy=…

docker run --env http_proxy=…

Keine hartkodierten Umgebungsspezifika

Page 11: Tipps und Tricks im Umgang mit Docker

FROM ubuntu:xenial-20170915

ENV JAVA_VER=“8u133“

RUN apt –y install \

openjdk-jre-8=${JAVA_VER}*

Versionsnummern in Variablen definieren

Page 12: Tipps und Tricks im Umgang mit Docker

Images wiederverwenden

base

agent

gocd-agent

jenkins-slave

telegraf ceph

registry-ceph

influxdb-ceph

Page 13: Tipps und Tricks im Umgang mit Docker

Nur ein Dienst pro Image / Init-Prozess für mehrere Prozesse(tini, dumb-init, supervisor, Windows Service Manager)

Container

nginx (PID 1)

Container

init (PID 1)nginx (PID 2)php-fpm (PID 3)

Container

nginx (PID 1)php-fpm (PID 2)

Container

entrypoint.sh (PID 1)nginx (PID 2)php-fpm (PID 3)

Page 14: Tipps und Tricks im Umgang mit Docker

Rechte einschränken mit USER

Page 15: Tipps und Tricks im Umgang mit Docker

Rückverfolgbarkeit durch Microlabeling

Page 16: Tipps und Tricks im Umgang mit Docker

FROM ubuntu:xenial-20170915

LABEL \

[email protected] \

org.label-schema.build-date=„${BUILD_DATE}" \

org.label-schema.name=„${IMAGE_NAME}" \

org.label-schema.description=„${IMAGE_DESCRIPTION}" \

org.label-schema.url=„${PROJECT_URL}" \

org.label-schema.vcs-ref=„${COMMIT_HASH}" \

org.label-schema.vcs-url=„${REPO_URL}" \

org.label-schema.vendor=„${VENDOR_NAME}" \

org.label-schema.version=„${IMAGE_VERSION}" \

org.label-schema.schema-version="1.0"

$ docker build \

--build-arg BUILD_DATE=`date +%s` …

Rückverfolgbarkeit durch Microlabeling / label-schema.org

Page 17: Tipps und Tricks im Umgang mit Docker

Continuous Integration / Image prüfen / Test-Deployments

Bauen

Tag mit Buildnr.

Tag als :dev

Tag als :latest

Testen

Funktionalität prüfen

Veröffentlichen

Tag als :stable

Page 18: Tipps und Tricks im Umgang mit Docker

Signierte Pakete / HTTPS / Prüfsummen

Page 19: Tipps und Tricks im Umgang mit Docker

Images aktualisierendocker build --pull

Unterdrücken des ENTRYPOINTdocker run -d --entrypoint bash ubuntu \

–c 'while true; do sleep 5; done‘

Ausgabe formatierendocker ps --format \

"table {{.Names}}\\t{{.Image}}\\t{{.Status}}"

Page 20: Tipps und Tricks im Umgang mit Docker

Schnelles Testendocker run -it –rm

Aufräumendocker system prune

Aufräumen für Image-Buildsdocker images -q | xargs docker rmi -f

docker images -q | % { docker rmi -f $_ }

Page 21: Tipps und Tricks im Umgang mit Docker

Informiert eigene Best Practices entwickeln