{"id":3619,"date":"2023-09-10T07:01:58","date_gmt":"2023-09-10T13:01:58","guid":{"rendered":"https:\/\/www.mooreds.com\/wordpress\/?p=3619"},"modified":"2023-09-10T07:01:58","modified_gmt":"2023-09-10T13:01:58","slug":"docker-thoughts","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/3619","title":{"rendered":"Docker thoughts"},"content":{"rendered":"<p>Docker is amazing tech for developer productivity.<\/p>\n<p>You can package up the dependencies for your application into one file (a Dockerfile) or more than one file (a docker-compose file). You might use the former for an application or service and the latter if your application depends on a database, cache, or other external architectural component.<\/p>\n<p>I am definitely late to the Docker party, as I remember Eric Norlin interviewing Solomon Hykes in the early 2010s at Gluecon. In 2018 I used it to stand up some consulting projects, but wondered at the value and the required investment.<\/p>\n<p>I&#8217;ve recently been using it extensively at work to set up quickstarts. These tutorials let folks stand up our software quickly for evaluation purposes. Docker is a fantastic fit for this use case.<\/p>\n<p>I&#8217;ve been a big fan of <a href=\"https:\/\/www.mooreds.com\/wordpress\/archives\/6\">detailed documentation<\/a> and readmes for setting up development environments, but Docker takes all that documentation (including tedious things like &#8216;install python 3.8.12. 3.8.11 doesn&#8217;t work&#8217;) and puts it into code that is accessible with single command.<\/p>\n<p>I have a foggy memory of detailed readmes, hours of setup and dependency hell, but Docker removes all of that. Doesn&#8217;t mean your Docker images\/compose files can&#8217;t get stale and won&#8217;t need love and attention, but it does mean you can control when you test and upgrade such dependencies, rather than discovering it when a new developer comes on the team and can&#8217;t get their environment set up.<\/p>\n<p>Shipping software to production via containers (Docker or otherwise) has operational benefits, but I&#8217;m less familiar with those. One of the nice things about developer relations is you&#8217;re separated a bit from operations. (It&#8217;s one of the downsides as well.) I haven&#8217;t recently worked with a production system where containers were used, but I have read nice things about the approach. Here&#8217;s an <a href=\"https:\/\/cloud.google.com\/blog\/products\/containers-kubernetes\/benefits-of-using-kubernetes\">article from Google which covers the technical benefits<\/a>.<\/p>\n<p>What about the <a href=\"https:\/\/www.docker.com\/blog\/updating-product-subscriptions\/\">licensing<\/a>? This business model change rocked the world of happy Docker users, but when you <a href=\"https:\/\/www.crunchbase.com\/organization\/docker\">take funding<\/a>, you have to make money. Actually, if you want to survive as a company, you have to make money, but if you take funding, you have to try to make a LOT of money. That&#8217;s the game, make sure you know before you start to play. But that&#8217;s a different post.<\/p>\n<p>As far as Docker licensing, as a Docker user, you have two options:<\/p>\n<ul>\n<li>pay docker when you reach the threshold<\/li>\n<li>use a docker alternative such as <a href=\"https:\/\/github.com\/runfinch\/finch\">finch<\/a> or <a href=\"https:\/\/developers.redhat.com\/blog\/2020\/11\/19\/transitioning-from-docker-to-podman\">podman<\/a><\/li>\n<\/ul>\n<p>As the previous paragraph implies, Docker is a subset of containers. The benefits I mention above apply to container based systems, not just Docker systems, but Docker is the solution I&#8217;m most familiar with.<\/p>\n<p>Docker, and containerization in general, feels like as big a leap as Stackoverflow, git or memory managed languages in terms of developer productivity.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker is amazing tech for developer productivity. You can package up the dependencies for your application into one file (a Dockerfile) or more than one file (a docker-compose file). You [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,37],"tags":[],"class_list":["post-3619","post","type-post","status-publish","format-standard","hentry","category-programming","category-tips"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/3619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3619"}],"version-history":[{"count":1,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/3619\/revisions"}],"predecessor-version":[{"id":3620,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/3619\/revisions\/3620"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}