Learning is not only about what but how, not only about what technical skills you should have but it’s also about how you should learn them.
In this blog post, I share some tips to learn Docker that I followed when creating Painless Docker Training contents.
Do you Know What is Virtualization ?
I guess many of developers and ops engineers that started their career in the last 2 or 3 years and haven’t been in the IT since virtualization was the buzzword, don’t know that much about this technology.
A system engineer with virtualization skills was (is?) more paid than a “regular” system administrator.
Virtualization was a revolutionary technology and will still so.
Knowing the difference between virtualization and containerization, the problem of virtualization and how containers are solving it, is a very good way to start.
Start Simple !
This advice is applicable to all of your learning paths ! Whether you’re learning Docker or any other technology or skill.
Start simple, forget about Kubernetes, Docker Swarm, probably also tools like Docker Compose for the moment. In other words, don’t start complicating your learning path from its first steps.
Start by pulling and pushing simple containers like the hello world container. Apply some changes to this container and commit your change, tag it then push it.
If your learning approach starts by deploying and using a Kubernetes cluster, you are on the wrong way !
Networking, Networking, Networking
Probably the most difficult part in containers and orchestration systems is the networking. Docker uses the same networking infrastructure inherent to the host OS. You can run your Docker container on your localhost without caring about things like SDN (Software Defined Network).
One you’d like to go further and understand how to create Docker clusters and work with orchestration systems, some network knowledge required.
Docker can use its default Networks like
- None Network
- Docker Host Network
- Bridge Network
- docker_gwbridge Network
It can also use software defined and multihost networks like:
- Bridge Networks
- docker_gwbridge Network
- Overlay Networks
- Open vSwitch
- Project Calico
Understanding containers networking could take some time but it’s is a must !
Docker is compatible with many filesystems and each one of them has pros and cons. Why would you choose aufs over devicemapper or overlay2 ?
Do you know what is the top writable layer and the difference between an image and a container ?
Do you know what is CoW strategy ?
Like Docker networking, understanding how data is stored and managed in Docker images and containers is important
Docker, Compose, Machine
Docker ecosystem is big and getting bigger everyday. Learning some tools like Docker Compose and Docker Machine will make your life easier and gives you more power to use Docker and optimize your delivery and deployment pipelines.
Start by learning Docker then move to Docker Compose & Docker Machine.
Learning the CLI is important. There are some GUIs for Docker but if you’d like to master a technology, the best way is using its CLI.
Orchestration is a Must
Once you master basic Docker concepts and tools, move to orchestration.
Just Docker without orchestration is not a scalable solution and could not
Orchestration will allow you to move from transactions ( containers) to abstractions ( services ). It allows you to streamline and optimize deployments.
If you just started learning, you should start by using Docker Swarm, then move to more complicated systems like K8S.
Move Gradually to other Skills and Services
Acquiring new skills is a path where you must have the skill A to move to the skill B, so be patient and organised.
You will find problems during your learning path but if you persist you’ll find answers to your questions.
“The path to success is to take massive, determined action. “ Tony Robbins
Reverse Engineer like a Hacker
Learn how to use Docker API, prototype your orchestrator or your self-healing system ..
Don’t be Ashamed to Ask
I know that a beginner could have some questions that could be considered as a n00bie questions. But any expert started as a n00b before being an expert !
Ask for help !
In some forums, you may have answers like the let me google that for you answers but this doesn’t mean that you should not ask. Sure, finding the answer without any help is better and helps more than asking the first question that comes to your mind in a forum but don’t be ashamed to ask, if you need this.
DevOpsLinks community has a dedicated discussion board to the DevOps ecosystem. Join it, ask your questions and you’ll have answers without any prejudice — we are kind and helpful 🙂
Learning is better when it’s social, you’ll find like-minded people from all levels and you will be up to date with topics that will interest you !
Connect Deeper !
I recently published a blog post in the same style. If you’re interested in learning AWS, you should check it !
We are working hard in order to give you the best of what we master. We are building online courses for everyone and every level: Newbies, intermediate and skilled people.
Our goal is giving people the opportunity to enter the DevOps world through quality courses and practical learning paths.
If you liked this article or want to discover similar tutorials, you will enjoy reading Painless Docker course.
We also started Shipped Newsletter: An Independent Newsletter Focused On Containers & Orchestration.
Happy hacking 🙂