Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How To Put Your Docker Image On A Diet
Search
Peter Fisher
September 26, 2019
Technology
0
160
How To Put Your Docker Image On A Diet
Talk given at PHP South Wales
Peter Fisher
September 26, 2019
Tweet
Share
More Decks by Peter Fisher
See All by Peter Fisher
Software Complexities
pfwd
0
140
Using a framework or not?
pfwd
1
170
How To Put Your Docker Image On A Diet | PHP South West
pfwd
1
260
Other Decks in Technology
See All in Technology
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
61
18k
転移学習とドメイン適応の基礎
kmatsui
2
570
インシデントレスポンスのライフサイクルを廻すポイントってなに / Pinpoints of Incidentresponse Lifecycle for Operation
sakaitakeshi
1
300
ユーザーストーリーのレビューを自動化したみたの
bun913
1
330
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.6k
Four keys改善の取り組み事例紹介
sansantech
PRO
3
230
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
3
240
The CloudCompare project by Dr. Daniel Girardeau-Montaut
kentaitakura
0
510
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
120
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
0
160
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
2.6k
社内勉強会運営のコツ
senoo
6
1.1k
Featured
See All Featured
Web development in the modern age
philhawksworth
202
10k
We Have a Design System, Now What?
morganepeng
42
6.7k
Thoughts on Productivity
jonyablonski
57
3.8k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
4 Signs Your Business is Dying
shpigford
175
21k
Building Adaptive Systems
keathley
30
1.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Designing Experiences People Love
moore
136
23k
YesSQL, Process and Tooling at Scale
rocio
163
13k
The Cult of Friendly URLs
andyhume
74
5.7k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
For a Future-Friendly Web
brad_frost
171
8.9k
Transcript
PUT YOUR DOCKER IMAGE ON A DIET @PFWD @HowToCodeWell
SELF TAUGHT DOCKER DEV IF YOU SEE AN IMPROVEMENT PLEASE
LET ME KNOW WE ARE ALL LEARNING ALL THE TIME @PFWD @HowToCodeWell
PHP 7.4 RC 1 SYMFONY 4.3.6 APACHE 2 WEB SERVER
ORIGINAL 1.09GB AFTER DIET 171 MB @PFWD @HowToCodeWell
@PFWD @HowToCodeWell
WHY | WHAT | HOW @PFWD @HowToCodeWell
PETER FISHER BSC MBSC HOW TO CODE WELL
@PFWD @HowToCodeWell
WHY | WHAT | HOW @PFWD @HowToCodeWell
SPEED | SECURITY | SANITY | SCALABILITY @PFWD @HowToCodeWell
SPEED THE LIGHTER THE IMAGE THE FASTER THE DEVELOPMENT @PFWD
@HowToCodeWell
SPEED THE LIGHTER THE IMAGE THE FASTER THE DEPLOYMENT @PFWD
@HowToCodeWell
SPEED THE LIGHTER THE IMAGE THE FASTER THE DISTRIBUTION @PFWD
@HowToCodeWell
SECURITY THE SMALLER THE IMAGE THE SMALLER THE ATTACK SURFACE
@PFWD @HowToCodeWell
SECURITY DO NOT BAKE SECURITY CREDS INTO YOUR IMAGES @PFWD
@HowToCodeWell
SANITY THE SMALLER THE IMAGE THE LESS YOU HAVE TO
MAINTAIN @PFWD @HowToCodeWell
SANITY THE SMALLER THE IMAGE THE MORE CONTROL YOU HAVE
@PFWD @HowToCodeWell
SANITY THE SMALLER THE IMAGE THE QUICKER YOU CAN SPOT
PROBLEMS @PFWD @HowToCodeWell
SANITY THE SMALLER THE IMAGE THE LESS RESPONSIBILITY IT HAS
@PFWD @HowToCodeWell
SCALEABILITY THE SMALLER THE IMAGE THE QUICKER IT CAN INSTALL
@PFWD @HowToCodeWell
SCALEABILITY THE SMALLER THE IMAGE THE QUICKER TO EXPAND @PFWD
@HowToCodeWell
SCALEABILITY THE SMALLER THE IMAGE THE QUICKER TO CONTRACT @PFWD
@HowToCodeWell
SCALEABILITY THE SMALLER THE IMAGE THE QUICKER TO REUSE @PFWD
@HowToCodeWell
WHY | WHAT | HOW @PFWD @HowToCodeWell
WHAT IS THE DIFFERENCE BETWEEN A DOCKER CONTAINER AND A
VIRTUAL MACHINE? @PFWD @HowToCodeWell
@PFWD @HowToCodeWell
VIRTUALIZATION != CONTAINERIZATION @PFWD @HowToCodeWell
VIRTUALIZATION = IS A HOUSE @PFWD @HowToCodeWell
CONTAINERIZATION = IS A ROOM @PFWD @HowToCodeWell
DIFFERENT LEVELS OF ABSTRACTION @PFWD @HowToCodeWell
BOTH SOLVE DIFFERENT PROBLEMS @PFWD @HowToCodeWell
BOTH SHOULD BE USED DIFFERENTLY @PFWD @HowToCodeWell
VIRTUALIZATION CUSTOM ENVIRONMENT ALLOCATED RESOURCES ECOSYSTEM @PFWD @HowToCodeWell
CONTAINIZATION SINGLE PROCESS SINGLE RESPONSIBILITY SINGLE PURPOSE @PFWD @HowToCodeWell
WHAT IS A DOCKER IMAGE ANYWAY? @PFWD @HowToCodeWell
WHAT IS A DOCKER IMAGE ANYWAY? ANSWER: A FILE MADE
FROM MANY LAYERS WHICH CREATES A CONTAINER @PFWD @HowToCodeWell
CONTAINERS ARE BUILT FROM IMAGES @PFWD @HowToCodeWell
WHAT IS A DOCKER IMAGE MADE FROM? @PFWD @HowToCodeWell
WHAT IS A DOCKER IMAGE ANYWAY? ANSWER: MANY DIFFERENT IMAGES
@PFWD @HowToCodeWell
WHAT IS A DOCKER FILE? @PFWD @HowToCodeWell
WHAT IS A DOCKER FILE? ANSWER: A SERIES OF INSTRUCTIONS
THAT BUILD A DOCKER IMAGE @PFWD @HowToCodeWell
WHY | WHAT | HOW @PFWD @HowToCodeWell
VERSION 1.0.0 1.09 GB @PFWD @HowToCodeWell
VERSION 1.0.0 1.09 GB @PFWD @HowToCodeWell
26 BUILD STEPS 18 RUN INSTRUCTIONS VERSION 1.0.0 1.09 GB
@PFWD @HowToCodeWell
10 BUILD STEPS VERSION 1.1.0 1.06 GB @PFWD @HowToCodeWell
MULTIPLE CONTAINER RESPONSIBILITIES VERSION 1.1.0 1.06 GB @PFWD @HowToCodeWell
REMOVED MULTIPLE CONTAINER REPSONSIBILTES MYSQL-SERVER MYSQL-CLIENT RABBITMQ-SERVER VERSION 1.2.0 708MB
@PFWD @HowToCodeWell
DO NOT VERSION 1.2.0 708MB @PFWD @HowToCodeWell
REMOVED PHP-7.4-* VERSION 1.3.0 449MB @PFWD @HowToCodeWell
WRONG BASE IMAGE VERSION 1.3.0 449MB @PFWD @HowToCodeWell
VERSION 1.4.0 601MB USE PHP APACHE BASE IMAGE @PFWD @HowToCodeWell
VERSION 1.5.0 485MB @PFWD @HowToCodeWell
VERSION 1.6.0 478MB DON’T INSTALL RECOMENDED PACKAGES —no-install-recommends @PFWD @HowToCodeWell
VERSION 1.7.0 444MB MULTI STAGE DOCKER BUILD 3 STAGES! @PFWD
@HowToCodeWell
DEV PACKAGES SHOULD BE FOR DEV NOT FOR PROD! @PFWD
@HowToCodeWell
VERSION 1.8.0 424MB MULTI STAGE DOCKER BUILD 5 STAGES! 2
TARGETS NO DEV PACKAGES IN STAGING STAGING HAS AUTOLOADER DUMPED @PFWD @HowToCodeWell
VERSION 1.9.0 171MB ALPINE IMAGES DECOUPLING PHP FROM APACHE @PFWD
@HowToCodeWell
VERSION 1.9.0 88.5MB USE PHP FPM PHP AND APACHE ARE
IN 2 CONTAINERS @PFWD @HowToCodeWell
VERSION 1.9.0 PHP 88.5MB APACHE 171MB ER… HOW? @PFWD @HowToCodeWell
VERSION 1.9.0 PHP 88.5MB APACHE 171MB PROXY PHP REQUESTS TO
THE PHP CONTAINER @PFWD @HowToCodeWell
VERSION 1.9.0 PHP 88.5MB APACHE 171MB 1) USE THE PHP
SERVICE NAME 2) NETWORK APACHE AND PHP 3) SHARE THE SITE VOLUME @PFWD @HowToCodeWell
VERSION 1.9.0 PHP 88.5MB APACHE 171MB 1) USE THE PHP
SERVICE NAME 2) NETWORK APACHE AND PHP 3) SHARE THE SITE VOLUME @PFWD @HowToCodeWell
Version Size 1.0.0 1.0.9 GB 1.1.0 1.0.6 GB Reduced build
steps 1.2.0 708 MB Removed other responsibilities 1.3.0 449 MB Removed unknown PHP packages (php7.4-*) 1.4.0 601 MB Changed the base image 1.5.0 485 MB Removed package and composer cache 1.6.0 478 MB Didn’t install recommend packages 1.7.0 444 MB Used Multi Stage Docker Images 1.8.0 424 MB Removed dev composer packages 1.9.0 171 MB - Apache 88 MB - PHP Separated Apache and PHP @PFWD @HowToCodeWell
Peter Fisher BSC MBSC GITHUB https://github.com/pfwd/how-to-put- your-docker-image-on-a-diet Version 1.0.0 $
docker-compose up -d --build Grab a ☕ @PFWD @HowToCodeWell
Peter Fisher BSC MBSC THANK YOU QUESTIONS? LET ME KNOW
WHAT YOU THINK! @PFWD @HowToCodeWell