In the ever changing landscape of (web)hosting there will always be newer and more exciting techniques and software than you’ve seen before. Staying up-to-date with all the new things in this industry is a challenge but also very exciting to witness. Working at Livebytes also means that I, as an engineer and hoster, have to go with the flow and see if these new pieces of software are interesting to use in client cases.
Lately there has been kind of a new buzz going around in “the world of hosting”. Everyone is kind of talking about it, I’m talking about Docker. Docker is in essence a product that could make life a lot easier for a lot of system engineers around the world. Docker was developed by Dotcloud (which have now renamed their company to Docker) and is getting a lot of praise from engineers. This can be seen in the amount of articles being written, the immense amount of Github projects based on Docker, and so on and so forth. Docker hasn’t even reached 1.0 yet at the time of writing this article which is pretty amazing.
What is Docker?
To better understand what Docker does, you have to have a bit of knowledge on how webapps or websites are usually deployed. The general steps to deploy a webapp or website are as follows:
- The developer makes an application or website with a version number (version 1.0 for example) and packages this application in a set of files.
- An engineer takes these files and puts them on a server that has a webserver on it and a databaseserver (the databaseserver is sometimes placed separate from the webserver, let’s pretend that this is not the case in this particular example).
- The engineer configures the application so that it can be served by the webserver and configures the application so that it can “talk” to the databaseserver.
- A user can now access the application through their browser and view the website/application.
These are roughly the steps that are involved to put an application “online”. There are some big disadvantages to the process as described above. The process seems easy and simple but really isn’t, between setting up a webserver/databaseserver there is a lot of time wasted configuring and setting up these services. Beside the fact that setting up takes some time, just imagine what happens if a server crashes and you need to set up a server again (you would have to set up not only the server but also complete the process above one more time). This is where Docker comes in.
Docker is best described as a container on a ship. Every Docker-container is a container that, in case of the example mentioned above, could contain one or multiple of the following components:
- A webserver
- A databaseserver
- The application
The big advantage to setting up this way is that you can create this container once and move it virtually anywhere on any kind of server (be it virtual or dedicated hardware). In case of a crash you can just set up a new server with Docker installed and spin up your containers and your application would be up and running in a matter of minutes/hours instead of maybe days. The good part is that the infrastructure would be identical to the old, crashed infrastructure.
One thing everybody likes is that Docker is an open source project so everyone can look into the code that runs Docker and can even contribute if they have some improvements. The Docker community is massive and there are hundreds of developers contributing on the project.
Are you excited about Docker and want to learn how you could use it? You can always contact me on my information (stated below) or leave a comment but the fastest way is to read about Docker on their website: http://docker.io.
You can contact me on my email address (firstname.lastname@example.org) or drop a comment below.