some of us make containers with ▸ Whats a container? ▸ Runtime, Code, System Tools, System Libraries, Other Server Stuff, App ▸ Containers can be though of as virtualization’s of a VM ▸ Examples of VMs in action: EC2, DevBoxes, others…
Open Container Initiative( OCI, which it was instrumental in creating) ▸ It makes use of core feature of Linux that were arguably cultivated in the OS land of BSD ▸ LXC - Linux Containers ▸ chroot ▸ CGroups ▸ Kernel Namespaces
for limiting accounts and resource usage ▸ kernel namespaces - for partitioning processes ▸ chroot - changes the root directory ▸ UFS - union file system, a mountable file system that docker uses in order to facilitate replication
is needed for node-canvas dependency on cairo. Annoyingly large... ▸ RUN apt-get update && apt-get install -yy --no-install-recommends \ ▸ libcairo2-dev libjpeg62-turbo-dev libpango1.0-dev libgif-dev \ ▸ build-essential g++ ▸ #Create non-root user ▸ RUN groupadd -r dnmonster && useradd -r -g dnmonster dnmonster ▸ #Following is effectively onbuild image. We can't use the official onbuild image ▸ #as it would run the above line everytime which is very tiresome ▸ RUN mkdir -p /usr/src/app ▸ WORKDIR /usr/src/app
of the linux kernel, this could for instance be “Alpine” ▸ Then we can add a base image “Ubuntu” to the image ▸ then apps like Apache and Emacs, Emacs is cool ▸ then with this image we can run a writable container
Gap - Minutes vs Hours vs Days/Weeks/Months to deploy ▸ Personnel Gap - DevOps vs Ops ▸ Tools Gap - Development Tools vs Production Tools ▸ Docker address the tools gap. Have you ever had a situation, like this ▸ Develop on OS X and use WSGi with Nginx and SqlLite and a local Redis ▸ Production on Ubuntu Gunicorn with Apache and PostgreSQL and Memcached
don't know ▸ The monolith is basically all the things in one place ▸ This is impossible and unmaintainable for most enterprise pursuits with Full Stack developers ▸ So teams become aligned and functionality is point of decomposition
doesn't know how the whole app works, or even their teams slice. ▸ One bad NPE and you app could be toast. Low resiliency ▸ Maintainability of legacy monoliths is more a corollary to developer retention in late life cycle then code quality. Band aids sticks glue are a way of life. ▸ Rewrites are unfathomable, because its all or nothing. Sunk cost fallacy.
Its easier to buy into tiny rebuilds and rewrites and modernatizations then super heroic massive bet the company on it efforts ▸ Divide and conquer is a fundamental principle of CS ▸ This should apply to apps too
Package Once Deploy Anywhere ▸ This is potentially the fulfillment of write once run anywhere ▸ A Node project Sails.JS could fit right in next to a Spring app and a Python app