New to DevOps (Week #2)

New to DevOps (Week #2)

Docker and Docker Hub

Before learning about docker, we should know why we need such a new technology like docker and containers. Before anything, there used to be one server for one computer. So, for any program to run on a certain computer it required all the frameworks and tools to support it, so it became very difficult to work with a large-scale setup. VMware came up with a solution for using virtual machines. Virtual machines make an environment for the program to run along with all the required tools without interfering with the parent machine. The advantage of doing so is using a lot of applications on one system but it also had the problem, that it needed its Operating System and also it wasn't super fast.

Before learning about docker we should know about Containers. Containers require only one Operating System and not any specific hardware for running several applications on the same system. Docker is a container platform that allows you to build, test and deploy applications quickly. A developer defines all the applications and their dependencies in a docker file which is then used to build docker images that define a docker container, doing this ensures that the application will run in any environment. For an analogy, docker files are the recipe for preparing a particular food, images are the ingredients and the container is the food ready to be served (deployed).

Docker Inc. was founded by Kamel Founadi, Solomon Hykes, and Sebastien Pahl.

Docker Hub is a service provided by Docker for finding and sharing container images with your team.

Jenkins

Jenkins is an open-source continuous integration/continuous delivery and deployment (CI/CD) automation software DevOps tool written in the Java programming language. It is used to implement CI/CD workflows, called pipelines.

Jenkins, in simpler terms, is used to automating the workflow of developers so that their work becomes easier and not repetitive. It runs on port number 8080.

Continuous Integration or CI is the part where the program is coded and it gets built into a docker container but CD stands for both continuous delivery and continuous deployment. When the code is ordered to execute at a certain time i.e. when we require a physical intervention to happen during the execution stage, this is known as delivery but if we want to automate the entire process without human involvement, then it is called deployment.