SlideShare a Scribd company logo
https://lenses.io London, Athens, New York
Docker for business
and how I stopped worrying about antipatterns
Marios Andreopoulos
DataOps for
Streaming Data
https://lenses.io
● Background in ECE, System
Administration, DevOps/SRE
● GNU, Linux, Go, Emacs, Free Software,
Open Source, Hacking Lover
● Part of Lenses.io founding team
● Currently working on:
○ DevOps
○ SRE
○ Support
○ Sales Engineering and Customer Relations
Head of Dev & IT Operations
w. bow, horn and mouse ears (2019)
Lenses.io
We are doing good!
● About 55 people, around half
based in Greece
● Many clients
● Significant and increasing
revenue
Success is a chain of events
Docker is a link on our chain
Docker is a tool.
Like a screwdriver or
a… laptop.
Sharing our OSS
Tools
We use it for...
Docker for business: How I stopped worrying about antipatterns
Creating reproducible
builds
We use it for...
Docker for business: How I stopped worrying about antipatterns
Sharing environments
We use it for...
Deploying our internal
tools
We use it for...
Docker for business: How I stopped worrying about antipatterns
Deploying 3rd party
internal tools
We use it for...
Packaging our
software
We use it for...
Docker for business: How I stopped worrying about antipatterns
Testing our software
We use it for...
Docker for business: How I stopped worrying about antipatterns
Advertising &
Demoing Lenses
We use it for...
Docker for business: How I stopped worrying about antipatterns
Marketing
We use it for...
Docker for business: How I stopped worrying about antipatterns
And even meetups...
We use it for...
What creates business value?
What creates value for customers?
For engineers?
For investors?
For bloggers?
For students?
...
In this context, do antipatterns matter?
They say, that…
If all you have is a hammer,
everything looks like a nail.
Maybe strict best practices and patterns,
make our tools look more like hammers?
Break the rules if you
can give me a good
excuse
Docker is simple to
use, so everyone
should write docker
files
Always enforce practice?
Some questions:
● Are you using the image in
production?
● How many people will use the
image?
● Is someone on your team who
can debug?
A container should
only do one thing
Always enforce pattern?
https://github.com/lensesio/fast-data-dev/tree/master/filesy
stem/usr/local/share/landoop/etc/supervisord.templates.d
Use exec for the main
container process
Good practice
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L813
A container should not
run as root
Enforce pattern?
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L708
https://github.com/lensesio/fast-data-dev/blob/master/filesy
stem/usr/local/share/landoop/etc/supervisord.templates.d/0
2-broker.conf
Enforce quality
When you can
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L15
Provide debug
capabilities
Good pattern
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L10
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L775
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L779
Is the port available?
Pitfall
https://gitlab.com/andmarios/checkport/blob/master/main.g
o
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L470
Can we write to the
file? The volume?
Pitfall
https://github.com/lensesio/lenses-docker/blob/master/Doc
kerfile#L61
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L164
Argue both ways
Good pattern?
https://github.com/lensesio/kafka-topics-ui/pull/135
Many dockers? Keep
things consistent
Good practice
https://github.com/lensesio/kafka-topics-ui
https://github.com/lensesio/schema-registry-ui
https://github.com/lensesio/kafka-connect-ui
Explicitly add files
(whitelist)
Good practice
Many external files?
Keep them under a
directory, use
structure.
Good practice
https://github.com/lensesio/fast-data-dev
Keep your user
contracts
Good practice
Use multistage builds
Good practice
https://hub.docker.com/repository/registry-1.docker.io/land
oop/fast-data-dev/builds/c2e00a24-5c8a-4649-8758-a3574
327195c
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L1
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L321
Are slim images
always best?
Good practice?
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L321
https://github.com/lensesio/lenses-docker/blob/master/Doc
kerfile#L1
Always store build
information
Good practice
https://github.com/lensesio/lenses-docker/blob/master/Doc
kerfile#L50
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L273
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L428
Build on the hub. Use
hooks to gather build
info and create tags
Useful practice
https://github.com/lensesio/lenses-docker/blob/master/hoo
ks/build
https://github.com/lensesio/lenses-docker/blob/master/hoo
ks/post_push
Learn bash
Seriously
Allow for build args
Good practice
https://github.com/lensesio/fast-data-dev/blob/master/Dock
erfile#L18
To expose supervisor
or not?
Pattern or antipattern?
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L266
People love good
entertainment
Creativity is a pattern
Follow conventions
Good pattern
https://github.com/lensesio/fast-data-dev/blob/master/filesy
stem/usr/local/share/landoop/config_kafka.sh
No uninitialized vars
Good practice
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L19
Mind the JVM
Good practice
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L140
https://github.com/lensesio/fast-data-dev/blob/master/setup
-and-run.sh#L482
Respect the logs
Good practice
https://github.com/lensesio/kafka-connect-ui/blob/master/d
ocker/run.sh#L89
Secrets may come in
base64
Pitfall
https://github.com/lensesio/lenses-docker/blob/master/setu
p.sh#L247
Print a delayed
message in the
console
Ok, that’s a hack
https://github.com/lensesio/fast-data-dev/blob/lenses/filesy
stem/usr/local/share/landoop/etc/supervisord.templates.d/0
0-delayed-message.conf
For developers
expose everything,
like logs
Good practice
https://github.com/lensesio/fast-data-dev/blob/lenses/filesy
stem/usr/local/share/landoop/etc/Caddyfile#L37
Provide examples
Good practice
https://github.com/lensesio/lenses-docker
Thank you!
https://lenses.io London, Athens, New York
https://lenses.io London, Athens, New York
Find us:
● https://lenses.io
● https://github.com/lensesio
● https://hub.docker.com/u/landoop
● https://hub.docker.com/u/lensesio
● https://www.linkedin.com/company/lensesio/
● https://twitter.com/lensesio
● https://launchpass.com/lensesio
We are hiring:
● https://lenses.io/careers/
● I am building a new team with junior and
mid-level support people with a track to
DevOps/SRE.

More Related Content

PDF
Building Data Intensity with AWS MSK & Lenses.io
PPTX
Mark Rendle ".NET Is Dead. Long Live .NET!"
PDF
The Paved Road at Netflix
PDF
Language Matters: JavaScript 
from IoT Product Concept 
to Production
PDF
London DevOps Meetup - PaaS as a platform for devops
PPTX
Security Testing for Containerized Applications
PPTX
DOES14 - Joshua Corman - Sonatype
PPTX
Intro to Cloud Native _ v1.0en (2021/01)
Building Data Intensity with AWS MSK & Lenses.io
Mark Rendle ".NET Is Dead. Long Live .NET!"
The Paved Road at Netflix
Language Matters: JavaScript 
from IoT Product Concept 
to Production
London DevOps Meetup - PaaS as a platform for devops
Security Testing for Containerized Applications
DOES14 - Joshua Corman - Sonatype
Intro to Cloud Native _ v1.0en (2021/01)

What's hot (20)

PDF
Microsoft DevOps Forum 2021 – DevOps & Security
PDF
Can i service this from my raspberry pi
PPTX
Cloud native programming model comparison
PPTX
Dev secops security and compliance at the speed of continuous delivery - owasp
PPTX
Software development in the modern age
PDF
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
PDF
Walking the Tightrope: Balancing Bias to Action and Planning
PDF
An Introduction To The Red Hat Model
PDF
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
PDF
Dev secops. Real experience.
PDF
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
PDF
Securing the Pipeline
PDF
stackconf 2021 | How DevOps changed the way we operate software
PPTX
Controlled Evolution with Puppet and AWS
PPTX
Fabric8: A free, end-to-end, cloud-native development experience
PDF
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
PDF
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
PPTX
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
PDF
Red Hat Forum London 2014 - Delivering Innovation at Speed, A JBoss Perspective
PDF
The Twelve Factor App
Microsoft DevOps Forum 2021 – DevOps & Security
Can i service this from my raspberry pi
Cloud native programming model comparison
Dev secops security and compliance at the speed of continuous delivery - owasp
Software development in the modern age
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
Walking the Tightrope: Balancing Bias to Action and Planning
An Introduction To The Red Hat Model
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
Dev secops. Real experience.
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Securing the Pipeline
stackconf 2021 | How DevOps changed the way we operate software
Controlled Evolution with Puppet and AWS
Fabric8: A free, end-to-end, cloud-native development experience
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
Red Hat Forum London 2014 - Delivering Innovation at Speed, A JBoss Perspective
The Twelve Factor App
Ad

Similar to Docker for business: How I stopped worrying about antipatterns (20)

PDF
Accelerate your software development with Docker
PPTX
Accelerate your development with Docker
PPTX
Tips and best practices for Docker
PDF
Introduction to Dev Ops and Containerisation with Docker
PDF
Docker Best Practices Workshop
PDF
Dockers & kubernetes detailed - Beginners to Geek
ODP
Dockerfiles & Best Practices
PDF
Managing Open Source software in the Docker era
PDF
Docker-v3.pdf
PDF
Hack the whale
PDF
Containers in depth – Understanding how containers work to better work with c...
PDF
A to Z of Docker
PDF
Docker in everyday development
PPTX
Introduction to Dockers.pptx
PDF
Killer Docker Workflows for Development
PDF
Let's dockerize
PDF
Be a better developer with Docker (revision 3)
PPTX
Docker Docker - Docker Security - Docker
PDF
Work shop - an introduction to the docker ecosystem
PDF
Microservices Docker @Bonn Agile
Accelerate your software development with Docker
Accelerate your development with Docker
Tips and best practices for Docker
Introduction to Dev Ops and Containerisation with Docker
Docker Best Practices Workshop
Dockers & kubernetes detailed - Beginners to Geek
Dockerfiles & Best Practices
Managing Open Source software in the Docker era
Docker-v3.pdf
Hack the whale
Containers in depth – Understanding how containers work to better work with c...
A to Z of Docker
Docker in everyday development
Introduction to Dockers.pptx
Killer Docker Workflows for Development
Let's dockerize
Be a better developer with Docker (revision 3)
Docker Docker - Docker Security - Docker
Work shop - an introduction to the docker ecosystem
Microservices Docker @Bonn Agile
Ad

Recently uploaded (20)

PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
history of c programming in notes for students .pptx
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
Salesforce Agentforce AI Implementation.pdf
PDF
Download FL Studio Crack Latest version 2025 ?
PDF
Cost to Outsource Software Development in 2025
PDF
Nekopoi APK 2025 free lastest update
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
L1 - Introduction to python Backend.pptx
PDF
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Odoo Companies in India – Driving Business Transformation.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
history of c programming in notes for students .pptx
Patient Appointment Booking in Odoo with online payment
Salesforce Agentforce AI Implementation.pdf
Download FL Studio Crack Latest version 2025 ?
Cost to Outsource Software Development in 2025
Nekopoi APK 2025 free lastest update
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
L1 - Introduction to python Backend.pptx
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
How to Choose the Right IT Partner for Your Business in Malaysia
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Navsoft: AI-Powered Business Solutions & Custom Software Development
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Designing Intelligence for the Shop Floor.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
Monitoring Stack: Grafana, Loki & Promtail
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Why Generative AI is the Future of Content, Code & Creativity?
Odoo Companies in India – Driving Business Transformation.pdf

Docker for business: How I stopped worrying about antipatterns