tipps und tricks im umgang mit docker
TRANSCRIPT
![Page 1: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/1.jpg)
Tipps und Tricks im Umgang mit Docker
Nicholas Dille
Microsoft MVP & Docker Captain
![Page 2: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/2.jpg)
Nicholas DilleEhemann, Vater, Geek, Autor, Aikidoka
DevOps Engineer @ Haufe-Lexware
Microsoft MVP seit 2010
Docker Captain seit 2017
http://dille.name
@NicholasDille
![Page 3: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/3.jpg)
![Page 4: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/4.jpg)
CI/CD
Dockerfile Image Registry
docker-compose.yml
Repository
MonitoringData
Orchestration
Host
Container
Service
Secrets
![Page 5: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/5.jpg)
Reproduzierbarkeitdurch
Automatisierung
Dockerfile / docker-compose / docker-machine / CI/CD
![Page 6: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/6.jpg)
FROM ubuntu
FROM ubuntu:xenial-20170915
Niemals :latest verwenden / Reproduzierbarkeit sicherstellen
![Page 7: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/7.jpg)
RUN apt-get update \
&& apt-get –y upgrade
Nicht alle Pakete aktualisieren
![Page 8: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/8.jpg)
>
Ableiten von Code nicht von Images / Ausnahme für offizielle Images
![Page 9: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/12.jpg)
Images wiederverwenden
base
agent
gocd-agent
jenkins-slave
telegraf ceph
registry-ceph
influxdb-ceph
![Page 13: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/14.jpg)
Rechte einschränken mit USER
![Page 15: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/15.jpg)
Rückverfolgbarkeit durch Microlabeling
![Page 16: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/16.jpg)
FROM ubuntu:xenial-20170915
LABEL \
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/18.jpg)
Signierte Pakete / HTTPS / Prüfsummen
![Page 19: Tipps und Tricks im Umgang mit Docker](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022050812/5a6478c37f8b9a5d568b463b/html5/thumbnails/21.jpg)
Informiert eigene Best Practices entwickeln