Docker tool was introduced in order to make it easier for you to create, deploy, and run applications by using containers. Containers provision you the packaging of your application with all the important components it requires, like libraries and other dependencies, and ship them all out as one package. Due to which you as a developer can be assured that your application will run on any other machine.
Docker Architecture
We will start from understanding Docker’s Architecture and main aspects in it, then we will continue with the important commands required for docker installation, build, push, run, ship etc. operations. DevOps architecture consists of these 5 main entities which are Registry, Images, Containers, Docker Daemon and Client.
Registry: It hosts the public and official images, docker registry that we use is Dockerhub.
Images: It can be downloaded from the registry directly or implicitly when starting a container.
Containers: They are basically instances of the images, multiple containers for a single image is possible.
Docker daemon: Daemon creates, runs and monitors the containers along with building and storing the images.
Client: Client talks to daemon via http.
Docker Orchestrate
Orchestration is used for managing the container’s lifecycle especially in dynamic environments. It is used for controlling and automating many tasks for the container. There are many Docker Orchestration tools like Docker Swarm, Kubernetes etc, and we’re using Docker Swarm commands below, let’s check the commands used for Docker Orchestration. Commands: To initialize swarm mode and listen to a specific interface. # Docker swarm init --advertise-addr 10.1.0.2 Join an existing swarm as manager node Docker swarm join --token<manager-token> 10.1.0.2:2377 Join a swarm as a worker node Docker swarm join --token<worker-token> 10.1.0.2:2377 List all the nodes in the swarm Docker node ls Create a service from an image on the existing port and deploy 3 instances Docker service create --replicas 3 -p 80:80 name -webngix List services running in swarm # docker service ls Scale a service # docker service scale web=5 List tasks of a service # docker service ps web
Docker Build
Build command is used for building images from a docker file. Let’s check some of essential docker build commands. Commands: To build the image from the docker file and tag image Docker build -t myapp :1.0 List all images that are locally stored Docker images Delete an image from the docker store Docker rmi alpine: 3.4
Docker Run
Run command is used for creating a container from a specified image. Check these run commands for your reference. Commands: To create and run a command: Docker run –name container_name docker_image Flags used: -d detach container on start -rm remove container once it stops -p publish host ip and host port to the container por -v define and share volume across containers –read-only sets it to read only permission
Docker Ship Docker gives you the capability of shipping your application container anywhere, on any platform, let’s check some commands for it. Commands: To pull an image from the registry Docker pull alpine:3.4. Retag a local image with a new image name Docker tag alpine:3.4 myrepo/ myalpine:3.4 Log in to a registry Docker login my.registry.com:8000 Push an image to a registry Docker push myrepo/ myalpine:3.4
Docker Clean up
To prevent from wasting the resources, you must know how to clean, we are providing few essential commands for same. Commands: To clean unused/dangling images: Docker image prune To remove images not used in containers Docker image prune -a To prune the entire system Docker system prune To leave a swarm Docker swarm leave To remove a swarm Docker stack rm stack_name To kill all running containers Docker kill $ (docker ps -q) To delete all stopped containers docker rm $(docker ps -a -q) To delete all images docker rmi $(docker images -q)
Docker Services
Let’s take a sneak peek over the commands used for viewing the running services, run the services, to view all service logs and to scale the services. Commands: List of all services running in a swarm Docker service ls To see all running services Docker stack services stack_name To see all service logs Docker service logs stack_name service_names To scale service across qualified nodes Docker service scale stack_name_service_name= replicas
Interaction with a container Let’s check how to make an interaction with a container Run a command in the container Docker exe -ti container_name command.sh Follow the container logs Docker logs -ft container name Save a running container as an image Docker commit -m “commit message” -a “author” container_name username/image_name: tag
Docker Important terms
Some of the important terms while using docker container.
Docker Layer: Read-only files to provision the system
Docker Image: Read only layer that is the base of the image
Docker Container: A runnable instance of the image
Docker Registry/hub: Central place where images live
Docker machine: A VM to run docker containers
Docker compose: A VM to run multiple containers as a system.