SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Tipps und Tricks
im Umgang mit Docker
Nicholas Dille
Microsoft MVP & Docker Captain
Nicholas Dille
Ehemann, Vater, Geek, Autor, Aikidoka
DevOps Engineer @ Haufe-Lexware
Microsoft MVP seit 2010
Docker Captain seit 2017
http://dille.name
@NicholasDille
CI/CD
Dockerfile Image Registry
docker-compose.yml
Repository
MonitoringData
Orchestration
Host
Container
Service
Secrets
Reproduzierbarkeit
durch
Automatisierung
Dockerfile / docker-compose / docker-machine / CI/CD
FROM ubuntu
FROM ubuntu:xenial-20170915
Niemals :latest verwenden / Reproduzierbarkeit sicherstellen
RUN apt-get update 
&& apt-get –y upgrade
Nicht alle Pakete aktualisieren
>
Ableiten von Code nicht von Images / Ausnahme für offizielle Images
Ableiten von Code nicht von Images / Ausnahme für offizielle Images
Image
Layer 1
Layer 2
Layer 3
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
FROM ubuntu:xenial-20170915
ENV JAVA_VER=“8u133“
RUN apt –y install 
openjdk-jre-8=${JAVA_VER}*
Versionsnummern in Variablen definieren
Images wiederverwenden
base
agent
gocd-agent
jenkins-slave
telegraf ceph
registry-ceph
influxdb-ceph
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)
Rechte einschränken mit USER
Rückverfolgbarkeit durch Microlabeling
FROM ubuntu:xenial-20170915
LABEL 
maintainer=team@x-celerate.de 
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
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
Signierte Pakete / HTTPS / Prüfsummen
Images aktualisieren
docker build --pull
Unterdrücken des ENTRYPOINT
docker run -d --entrypoint bash ubuntu 
–c 'while true; do sleep 5; done‘
Ausgabe formatieren
docker ps --format 
"table {{.Names}}t{{.Image}}t{{.Status}}"
Schnelles Testen
docker run -it –rm
Aufräumen
docker system prune
Aufräumen für Image-Builds
docker images -q | xargs docker rmi -f
docker images -q | % { docker rmi -f $_ }
Informiert eigene Best Practices entwickeln

Weitere ähnliche Inhalte

Was ist angesagt?

OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
Tobias Schneck
 

Was ist angesagt? (20)

docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Nginx
NginxNginx
Nginx
 
Making the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICMaking the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUIC
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
 
Kubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererKubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container Orchestrierer
 

Ähnlich wie Tipps und Tricks im Umgang mit Docker

Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
Frank Schmittlein
 

Ähnlich wie Tipps und Tricks im Umgang mit Docker (20)

Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Was ist Docker?
Was ist Docker?Was ist Docker?
Was ist Docker?
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
Ubuntu-/Debian-Packaging
Ubuntu-/Debian-PackagingUbuntu-/Debian-Packaging
Ubuntu-/Debian-Packaging
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
Lokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEVLokale TYPO3 Entwicklungsumgebung mit DDEV
Lokale TYPO3 Entwicklungsumgebung mit DDEV
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Apex meets Docker
Apex meets DockerApex meets Docker
Apex meets Docker
 
200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 

Tipps und Tricks im Umgang mit Docker

Hinweis der Redaktion

  1. Nutzung der Automatisierungswerkzeuge Dockerfile docker-compose docker-machine Continuous Delivery erspart Tipparbeit Automatisierung verhindert menschliche Fehler
  2. Inhalt von Images unbekannt Niemand analysiert docker history Zukünftige Updates von fremden Images unvorhersehbar Wiederverwenden des Codes (Dockerfile, docker-compose.yml etc.) Ausnahme: Offizielle Images (hub.docker.com/explore bzw. library/*)
  3. Meine Tests 100 Layers keine Beeinträchtigung der Zugriffszeit Ein ADD-Befehl für Verzeichnisstruktur