Issue
I develop websites using python with django framework, I like to get things done fast. I used to use virtual machine or in the local host machine, recently went to vagrant, I am not sure if there is other technologies to help keep the process faster? I could use some tips and pointers.
Solution
- Docker
- It is great at building and sharing disk images with others through the Docker Index
- Docker is a manager for infrastructure (today's bindings are for Linux Containers, but future bindings including KVM, Hyper-V, Xen, etc.)
- Docker is a great image distribution model for server templates built with Configuration * Managers (like Chef, Puppet, SaltStack, etc)
- Docker uses btrfs (a copy-on-write filesystem) to keep track of filesystem diff's which can be committed and collaborated on with other users (like git)
- Docker has a central repository of disk images (public and private) that allow you to easily run different operating systems (Ubuntu, Centos, Fedora, even Gentoo)
- virtualenv
It isolates the Python interpreter and the Python dependencies on one machine so you can install multiple Python projects alongside each other with their own dependencies. But for the rest of the machine the virtualenv doesn't do anything:
you still have global dependencies / packages that are installed using your Mac OS X / Linux package manager and these are shared between the virtualenvs.
- A virtual machine (VM)
- It is a software program or operating system that not only exhibits the behavior of a separate computer, but is also capable of performing tasks such as running applications and programs like a separate computer.
- A virtual machine, usually known as a guest is created within another computing environment referred as a "host."
- Multiple virtual machines can exist within a single host at one time.
- Vagrant
often used to programmatically configure virtual machines
specifies the whole machine: it allows you to specify the Linux distribution, packages to be installed and actions to be taken to install the project.
So if you want to launch a Vagrant box with multiple Python projects on that machine you'd still use virtualenv to keep the Python dependencies separate.
Answered By - mahendra kamble Answer Checked By - Cary Denson (WPSolving Admin)