SlideShare a Scribd company logo
The First 10M Pulls:
Building the Official curl Image for Docker Hub
James Fuller, webcomposite s.r.o.
Have you ever ?
> curl https://curl.haxx.se
CURL DEMO
curl demo
curl / libcurl
command line tool and library for transferring data with
URLs
Daniel Stenberg - https://daniel.haxx.se/blog/2020/04/30/the-state-of-curl-2020/
Daniel Stenberg - https://daniel.haxx.se/blog/2020/04/30/the-state-of-curl-2020/
Daniel Stenberg - https://daniel.haxx.se/blog/2020/04/30/the-state-of-curl-2020/
Daniel Stenberg - https://daniel.haxx.se/blog/2020/04/30/the-state-of-curl-2020/
https://curl.haxx.se/docs/companies.html/
Daniel Stenberg - https://daniel.haxx.se/blog/2020/04/30/the-state-of-curl-2020/
Have you ever ?
>docker run curlimages/curl https://curl.haxx.se
curl docker demo
James Fuller
programmer
programmer, webcomposite
s.r.o.
@_james_fuller
Agenda
● Introduction
● Design
● Implementation
● Lessons learned
● Next steps
● Questions
James Fuller, webcomposite s.r.o.
c/C++/python/fp
bigdata, semantics, network
http://jim.fuller.name
@_james_fuller
jim.fuller@webcomposite.com
functional programming
Lead Engineer
HTTP
database
semantics
data network
Who is curl/libcurl ?
Benevolent dictator for lifeDaniel Stenberg ‘BDFL’ :
curl src - https://github.com/curl/
curl
curl-docker src - https://github.com/curl/curl-docker
dockerhub - curlimages/curl
Why curl docker image ?
https://twitter.com/jpmens/status/1166301485178728448
Design
Design decisions
base image vs end user consumption ?
‘homebrew’ vs builder framework ?
Design concerns
test docker image
ensure docker image is ‘secure’
Mitigate security risk
Rui Shu, Xiaohui Gu and William Enck –
“A Study of Security Vulnerabilities on Docker Hub”, March 2017
https://dl.acm.org/doi/pdf/10.1145/3029806.3029832
Implementation details
multi-stage
multi arch
minimal size image
Implementation
Implementation
Build.
generates docker image for end user
‘consumption’
Makefile build system
build targets expose all functionality
base on latest curl release tag
CI build/test/scan with travis
curl-docker build demo
Implementation
Test.
curl’s own extensive test suite
lint check dockerfile - projectatomic/dockerfile-lint
docker image test - google’s container-structure-test
run the container
tests demo
Implementation
Security.
virus checker: clamav
rootkit: rkhunter (chkrootkit)
system: lynis
docker: trivis, anchore
security scanning demo
Implementation
Publish.
docker buildx push
Lessons learned
Be conservative
Incremental enhancement
Don’t break the internet
Keep it simple
single image
adopt builder framework when ready
● security scanning works !
● docker build buildx makes it easy to ‘multi-arch’
● docker great for development, be more careful about
production
Other lessons learned
Next steps
Variation
”batteries included”, minimal,
…
Useful deps
ex. include jq
More
arch, ssl backends, http2/3
impl, tests, security, …
Standard
Library ?
Thank you & Questions ?

More Related Content

PDF
How to Use Mirroring and Caching to Optimize your Container Registry
PDF
Карманный PaaS с Dokku (Александр Белецкий)
PDF
How to create your own hack environment
PDF
PDF
Docker worshop @Twitter - How to use your own private registry
PDF
Wodby. cloud infrastructure platform
PPTX
Docker Ecosystem: Part V - Docker Registry
PPTX
Introduzione a GitHub Actions (beta)
How to Use Mirroring and Caching to Optimize your Container Registry
Карманный PaaS с Dokku (Александр Белецкий)
How to create your own hack environment
Docker worshop @Twitter - How to use your own private registry
Wodby. cloud infrastructure platform
Docker Ecosystem: Part V - Docker Registry
Introduzione a GitHub Actions (beta)

What's hot (19)

PDF
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
PDF
Lessons Learned from running Docker in production
PPTX
Continous Delivery to Kubernetes using Helm
PDF
Docker in practice
PPTX
Docker Ecosystem: Part III - Machine
PDF
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
PDF
NLUUG Spring 2012 - OpenShift Primer
PPTX
Into to Docker (Central PA Java User Group - 8/14/2017)
DOCX
DockerCoreNet
PDF
Behind the scenes with Docker volume plugins
PDF
Automating Mendix application deployments with Nix
PDF
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
PDF
Introduction to Octopress at DRUG
PPTX
Dockerizing stashboard - Docker meetup at Twilio
PDF
Perl on-embedded-devices
ODP
Opps I deployed it again-ploneconf2010
PDF
Puppeteerのお話
PDF
EC2 Storage for Docker 150526b
PDF
Docker Plugin for Heat
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
Lessons Learned from running Docker in production
Continous Delivery to Kubernetes using Helm
Docker in practice
Docker Ecosystem: Part III - Machine
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
NLUUG Spring 2012 - OpenShift Primer
Into to Docker (Central PA Java User Group - 8/14/2017)
DockerCoreNet
Behind the scenes with Docker volume plugins
Automating Mendix application deployments with Nix
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Introduction to Octopress at DRUG
Dockerizing stashboard - Docker meetup at Twilio
Perl on-embedded-devices
Opps I deployed it again-ploneconf2010
Puppeteerのお話
EC2 Storage for Docker 150526b
Docker Plugin for Heat
Ad

Similar to The First 10M Pulls: Building The Official Curl Image for Docker Hub (20)

PDF
Microservices, la risposta che (forse) cercavi!
PDF
mastering libcurl part 1
PDF
Docker @ Data Science Meetup
PPTX
Docker @ FOSS4G 2016, Bonn
PDF
Cloud expo-east-2015
PPTX
Interconnecting containers at scale #Dockercon
PDF
Docker6anniversary
PDF
Deploying Apache Spark Jobs on Kubernetes with Helm and Spark Operator
PDF
BBL Premiers pas avec Docker
PDF
Learning Docker with Thomas
PDF
Installing Component Pack 6.0.0.6
PPTX
Dockerizing Stashboard
PDF
DockerCon SF 2015: Interconnecting Containers at Scale w/ NGINX
PDF
DockerCon 2016 Seattle Recap
PDF
Docker for Ruby Developers
PDF
Kubernetes Operability Tooling (GOTO Chicago 2019)
PDF
Docker Demo @ IuK Seminar
PDF
How Stuffle uses Docker for deployments
PPTX
JFrog container registry - DevOps extravaganza
PDF
Don't screw it up! How to build durable API
Microservices, la risposta che (forse) cercavi!
mastering libcurl part 1
Docker @ Data Science Meetup
Docker @ FOSS4G 2016, Bonn
Cloud expo-east-2015
Interconnecting containers at scale #Dockercon
Docker6anniversary
Deploying Apache Spark Jobs on Kubernetes with Helm and Spark Operator
BBL Premiers pas avec Docker
Learning Docker with Thomas
Installing Component Pack 6.0.0.6
Dockerizing Stashboard
DockerCon SF 2015: Interconnecting Containers at Scale w/ NGINX
DockerCon 2016 Seattle Recap
Docker for Ruby Developers
Kubernetes Operability Tooling (GOTO Chicago 2019)
Docker Demo @ IuK Seminar
How Stuffle uses Docker for deployments
JFrog container registry - DevOps extravaganza
Don't screw it up! How to build durable API
Ad

More from Docker, Inc. (20)

PDF
Containerize Your Game Server for the Best Multiplayer Experience
PDF
How to Improve Your Image Builds Using Advance Docker Build
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
Securing Your Containerized Applications with NGINX
PDF
How To Build and Run Node Apps with Docker and Compose
PDF
Hands-on Helm
PDF
Distributed Deep Learning with Docker at Salesforce
PDF
Monitoring in a Microservices World
PDF
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
PDF
Predicting Space Weather with Docker
PDF
Become a Docker Power User With Microsoft Visual Studio Code
PDF
Monolithic to Microservices + Docker = SDLC on Steroids!
PDF
Kubernetes at Datadog Scale
PDF
Labels, Labels, Labels
PDF
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
PDF
Developing with Docker for the Arm Architecture
PDF
Sharing is Caring: How to Begin Speaking at Conferences
PDF
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Containerize Your Game Server for the Best Multiplayer Experience
How to Improve Your Image Builds Using Advance Docker Build
Build & Deploy Multi-Container Applications to AWS
Securing Your Containerized Applications with NGINX
How To Build and Run Node Apps with Docker and Compose
Hands-on Helm
Distributed Deep Learning with Docker at Salesforce
Monitoring in a Microservices World
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Predicting Space Weather with Docker
Become a Docker Power User With Microsoft Visual Studio Code
Monolithic to Microservices + Docker = SDLC on Steroids!
Kubernetes at Datadog Scale
Labels, Labels, Labels
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Build & Deploy Multi-Container Applications to AWS
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Developing with Docker for the Arm Architecture
Sharing is Caring: How to Begin Speaking at Conferences
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Modernizing your data center with Dell and AMD
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Advanced Soft Computing BINUS July 2025.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Cloud computing and distributed systems.
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
cuic standard and advanced reporting.pdf
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
PDF
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx
Approach and Philosophy of On baking technology
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Chapter 3 Spatial Domain Image Processing.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Modernizing your data center with Dell and AMD
Machine learning based COVID-19 study performance prediction
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Advanced Soft Computing BINUS July 2025.pdf
The AUB Centre for AI in Media Proposal.docx
Advanced methodologies resolving dimensionality complications for autism neur...
Cloud computing and distributed systems.
Network Security Unit 5.pdf for BCA BBA.
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
NewMind AI Monthly Chronicles - July 2025
cuic standard and advanced reporting.pdf
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Electronic commerce courselecture one. Pdf

The First 10M Pulls: Building The Official Curl Image for Docker Hub