![Page 1: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/1.jpg)
Meteor - DockerThe Good, the Bad & the Awesome
![Page 2: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/2.jpg)
...Studied SE at TU Vienna
Worked 2 years in Silicon Valley
About me
Not a Docker Expert!
![Page 3: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/3.jpg)
What is Docker?
![Page 4: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/4.jpg)
Build, Ship, RunAn open platform for distributed applications for developers and sysadmins
![Page 5: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/5.jpg)
Server
Host OS
Hypervisor
Guest OS
Guest OS
Guest OS
Bin/Libs
Bin/Libs
Bin/Libs
App A App A’ App B
Host OS
Server
Bins/Libs Bins/Libs
Container E
ngine
App A
App A
’
App B
App B
’
App B
’ VMContainer
![Page 6: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/6.jpg)
![Page 7: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/7.jpg)
![Page 8: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/8.jpg)
![Page 9: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/9.jpg)
The goodMeteor is ready for Docker!
![Page 10: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/10.jpg)
There is a Docker image!https://github.com/meteorhacks/meteord
![Page 11: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/11.jpg)
![Page 12: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/12.jpg)
![Page 13: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/13.jpg)
![Page 14: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/14.jpg)
![Page 15: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/15.jpg)
Build server App Servers
Dev Environment
Sourcecode
Tarball
Tarball
my current setup
![Page 16: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/16.jpg)
Git + Meteorfully automated process
post-receive hookmeteor build
scp + ssh
![Page 17: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/17.jpg)
CoreOSLightweight LinuxShips with Docker
Uses SystemdUpdates automatically
![Page 18: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/18.jpg)
The “Bad”One Process per Container
![Page 19: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/19.jpg)
nginxis NOT ready for Docker
.. but it works for basic scenariosit’s better to use haproxy instead
![Page 20: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/20.jpg)
MongoDBgreat Docker support
but does not support OPLOG out of the box→ you need to write your own Dockerfile to
make this work!
![Page 21: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/21.jpg)
Networking is a bitchadditional layer
container doesn’t know about host network...
![Page 22: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/22.jpg)
App Monitoringcan be tricky, but there are options:
Kadira, Logentries, ...
![Page 23: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/23.jpg)
Service MonitoringI created a Docker image for that:
kromit/systemd_monhttps://github.com/faburem/systemd_mon/tree/Docker-image
(Pull request pending)
![Page 24: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/24.jpg)
![Page 25: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/25.jpg)
Continuous Integration
![Page 26: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/26.jpg)
0 downtime Deployment
Rebuild Docker Image
Run temporary instance of current
Image
Run instance of new image
Stop main instance
Docker Host(CoreOS)
Stop temporary instance
![Page 27: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/27.jpg)
Scaling is fun*docker run image/name
* configuring nginx not so much
![Page 28: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/28.jpg)
![Page 29: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/29.jpg)
Questions?
faburem Fabian Kromer @faburem
![Page 30: Meteor - Docker: The good, the Bad & the Awesome](https://reader034.vdocuments.net/reader034/viewer/2022042722/58a9d75e1a28aba05b8b4ed7/html5/thumbnails/30.jpg)
var promise = new Promise(function(resolve, reject) { while (! codingFinished){ // finish coding } if (/* everything turned out fine */) { resolve(/* sourceCode */); } else { reject(Error("Fail")); }});promise.then(function(result) { // make public release on Github}, function(err){console.log(err);});