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

Tipps und Tricks im Umgang mit Docker

Jan 21, 2018

Download

Technology

Nicholas Dille
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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