Day 11. Docker for DevOps

Day 11. Docker for DevOps

Docker

Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. So with Docker you will be able to Develop once and deploy anywhere.

Docker Architecture

It is Client Server architecture

Docker Client:

It allows the user to communicate with docker host. It is local machine which talks to Docker Host. Docker client and host communicate with API requests.

It provides docker commands. Client can talk to more than one host.

Docker Host:

It listens for API requests from client. It manages docker images. It contains Docker Objects like Images, Containers, Volumes and Networks.

Registry(Docker Hub):

It is used to store docker images. Dockerhub is the default registry. We can create our own registries.

Docker image:

Images are the templates from which containers are built. Images can be built using a Dockerfile or found on public registries like DockerHub. Images can be built from other images.

Docker Container:

It can also be looked as a running instance of an image. Unlike images containers are able to accept data and commands.

Docker Installation

on Windows

Download installer file from https://docs.docker.com/desktop/install/windows-install/

Install it step by step

On Linux

Install docker using https://docs.docker.com/desktop/install/linux-install/

Docker Commands

docker run - Create and run a new container from an image

https://docs.docker.com/reference/cli/docker/container/run/

docker run <image-name>

docker exec - Execute a command in a running container

  • -d flag: for running the commands in the background.

  • -i flag: it will keep STDIN open even when not attached.

  • -e flag: sets the environment variables

docker exec [options]

docker ps - List containers

  • -a flag: shows us all the containers, stopped or running.

  • -l flag: shows us the latest container.

  • -q flag: shows only the Id of the containers.

docker ps #list all containers
docker ps -[options]

docker build - Build an image from a Dockerfile

docker build -t image_name:tag .

docker pull - Download an image from a registry

docker pull <image-name>

docker push - Upload an image to a registry images List

docker push <image-name>

docker images - List images

docker images

docker login - Log in to a registry

-p, --password - Password

--password-stdin -Take the password from stdin

-u, --username - Username

docker login [options] [server]

docker logout - Log out from a registry

docker logout [server]

docker search- Search Docker Hub for images

-f, --filter -Filter output based on conditions provided

--format -Pretty-print search using a Go template

--limit -Max number of search results

--no-trunc - Don't truncate output

docker search [options]

docker version - Show the Docker version information

docker version

docker info - Display system-wide information

docker info

docker stop - stops docker container

docker stop <container-id>

docker start - starts docker container

docker start <container-id>

docker rm - delete a container

  • -f flag: remove the container forcefully.

  • -v flag: remove the volumes.

  • -l flag: remove the specific link mentioned.

docker rm [options] <container name or container-id>

docker inspect - Debug docker containers

docker inspect

Use-Case

Explore and make use of your new found docker skills by playing around with a PHPMYADMIN image.

  • Lookup phpMyAdmin image on DockerHub

  • Pull phpMyAdmin image

  • Run the phpMyAdmin image with intended flags

  • Access the admin page in your browser

#pull phpmyadmin image from docker hub
docker pull phpmyadmin
#list out docker images
docker images
#copy image id and use it in run command
docker run -d -p 80:80 <image-id>
#list docker containers
docker ps

#Access the admin page in your browser