Hey, everyone, i am a javascript web developer, I have worked on both Node and Angular (Back and Front) but right now on Front. I know docker and kubernets are all the rage but i was busy learning Node and Angular i had one and a half year of experience still getting better in both. So what i want to know is Why do we need Docker and Kubernetes as in simple term (Explain like i am 5) and i am also working on my side project so whether knowledge of them will help me to make a good decision regarding my projects.
SORRY FOR BAD ENGLISH
At the risk of displeasing the Docker crowd, I would say you can get pretty far without them.<p>In general, I see a lot of people learning and using BuzzWord solutions for problems that they don't have.<p>In most cases, you'll have some problem and look for a solution to it. If your problem is spending a lot of time messing around with dependencies and deployments and "but it works on my machine" type issues, then Docker may well be the solution.<p>If you learn a solution and then see what problems it can solve (Hey, everyone is talking about Docker. Let me learn it too), you'll end up frustrated and confused.<p>Of course, it's a balance -- often you can learn about problems that you didn't even know you had by learning about new technology. But so far I see more people erring towards "Let's fix these problems I don't have" than "I'll just keep doing things this slow old way because I don't want to keep up with tech movements"
Docker & kubernetes are modern Dev ops tools - the former abstracts away the host specific quirks, and the latter allows managing many (docker) containers in production.<p>Should you learn this - it depends. If you plan on building microservices whose devops you'll need to manage, docker is highly recommended. You can get away not learning kubernetes by relying on AWS ECS equivalents, and that's probably what you should do as a beginner wanting to deploy.<p>If your app architecture is event-driven, and can be rest based AWS lambda is a great option where you don't have to learn either. Beware of costs if invoking in the millions, but if your service ever scales to that, you've probably already found a lucrative opportunity that can afford experienced help
Using docker can greatly improve your development situation.
For example, you can use docker to define the full environment needed to run your web app, meaning you can have another dev running it with "docker run", and not needing to install any local dependencies, as everything (web server, node etc) is contained inside the docker container.
This turns out also be useful for your future self, when you in 2 years from now are having troubles re-creating the environment needed for running your service.<p>Docker orchestrate can further improve your development situation, in which you can use it to define and test out multiple virtual servers on your laptop, such as the database, the file server and the web server.
You can worry about Kubernetes later for now just understand docker basics. Docker really is a game changer.<p>Want to try something in Postgres 9.4, you can do it with just one command, want Rabbit MQ with web stomp enabled, get it with just one command.<p>Setting up Environments with Docker is ridiculously easy, Docker files are pretty intuitive and easy to understand.
I was running my side project without docker and trust me it was making my life hell due to the difference in production and development environment and also a fear that if I drop this server how the hell am I gonna setup another server with a small amount of downtime. I started moving my side project to docker and in the process learned a lot about it. Now I can't work without a docker . It's not perfect but God it's so much better
You don't have to, but docker + docker-compose is excellent for getting a development stack setup with extremely little effort (and other tooling you may need) - such as postgres/mysql/redis/mongodb/couchdb/jenkins/etc...<p>You don't need to learn how to build containers. Just the basics of how docker works.
In the amount of time it took for you to write this question and parse the subsequent opinions, rants and religious arguments, you could have followed a basic Docker tutorial, written a simple Dockerfile and answered the more important questions: Is this useful to me? Can I be more productive with these tools?<p>:)
Yes. It's ubiquitous now. It'll be a bit like everyone around you talking about the "Upside Down". And you have no idea because you never watch tv except for Emily Chang. Plus, you can understand it in under 1 hour:<p><a href="https://training.docker.com/introduction-to-docker" rel="nofollow">https://training.docker.com/introduction-to-docker</a><p>If you are into Node, I'd also get up to speed with Serverless Deployments and Lambda Functions. Buzzwords, yes. But also modern, powerful and game changing. And most importantly, you won't have to worry about any devops internals ;)<p><a href="https://cloud.google.com/functions/" rel="nofollow">https://cloud.google.com/functions/</a>
i'd suggest learning the following:<p>1) how to write dockerfiles [1]<p>2) docker build, tagging, and push<p>3) docker run and docker exec<p>4) docker-compose<p>anything beyond that is probably not worth it unless you're also responsible for your infrastructure.<p>[1] <a href="https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#minimize-the-number-of-layers" rel="nofollow">https://docs.docker.com/engine/userguide/eng-image/dockerfil...</a>
I would say it's worth learning Docker.<p>I've been using it since 2014 and it's one of the best software related moves I've made.<p>I wouldn't say I'm a super fan boy of anything, and I typically only use tools when they make my life way better. Docker is one of those tools because it helps me set up development environments for the web applications I develop, as well as help me move those apps to production seamlessly.<p>I'm a freelance dev so I have a lot of projects on my machine, and it's amazing to be able to spin up and shut down each app in seconds and also hand everything over to a client and have them run 1 command to get everything up and running regardless of whether they are running Mac, Windows or Linux.<p>When it comes to production, it's as simple as installing Docker and then running a few commands to have everything up and running with total confidence that it works. That's what Docker can give you in the end with not too much effort.<p>The reason it's a lot better than a VM is how fast and efficient it is. There's no massive disk space overhead and containers start in milliseconds, not minutes. Honestly it's not even comparable to a VM. There's just too many wins that make it an entirely different beast.<p>If you don't want to put in the 50 or 100+ hour grind of learning it on your own, I've assembled a 5 hour premium video course that will teach you how to dockerize your own web apps. You'll walk away fully able to use Docker in the real world. There are node examples too. This course is everything I've learned in the last 3 years of using Docker and is filled with best practices from real world usage and feedback from hundreds of people.<p>You can find that course at <a href="https://diveintodocker.com/" rel="nofollow">https://diveintodocker.com/</a>.<p>If you have any questions let me know. I'd be glad to help. I'm also a Docker Captain (Docker reached out to me to become a trusted content provider) so I'm not just pitching you on buying something (if I didn't fully believe in Docker I wouldn't be spending my time personally using it).<p>I also have plenty of free Docker related material on my blog[0] and Youtube[1]. The first hour of my premium course is available on Youtube, no strings attached.<p>[0]: <a href="https://nickjanetakis.com/blog/tag/docker" rel="nofollow">https://nickjanetakis.com/blog/tag/docker</a><p>[1]: <a href="https://www.youtube.com/watch?v=XeSD17YRijk&list=PL-v3vdeWVEsXT-u0JDQZnM90feU3NE3v8" rel="nofollow">https://www.youtube.com/watch?v=XeSD17YRijk&list=PL-v3vdeWVE...</a>