DEV Community

loading...
Cover image for Docker Cheat Sheet

Docker Cheat Sheet

ankushsinghgandhi profile image Ankush Singh Gandhi Updated on ・7 min read

What is Docker🔽

Docker is an open-source project for automating the deployment of applications as portable, self-sufficient containers that can run on the cloud or on-premises. Docker is also a company that promotes and evolves this technology, working in collaboration with cloud, Linux, and Windows vendors, including Microsoft.

Docker

Docker containers can run anywhere, on-premises in the customer datacenter, in an external service provider or in the cloud, on Azure. Docker image containers can run natively on Linux and Windows. However, Windows images can run only on Windows hosts and Linux images can run on Linux hosts and Windows hosts.


⭐⭐Support me here so that i can provide more usefull content⭐⭐
And visit ankushgandhi.com for more usefull content

Buy Me A Coffee


Developers can use development environments on Windows, Linux, or macOS. On the development computer, the developer runs a Docker host where Docker images are deployed, including the app and its dependencies. Developers who work on Linux or on macOS use a Docker host that is Linux based, and they can create images only for Linux containers.

Docker

Containers include the application and all its dependencies. However, they share the OS kernel with other containers, running as isolated processes in user space on the host operating system.

A simple analogy🔽

In Docker, each layer is the resulting set of changes that happen to the filesystem after executing a command, such as, installing a program.

So, when you "look" at the filesystem after the layer has been copied, you see all the files, included the layer when the program was installed.

You can think of an image as an auxiliary read-only hard disk ready to be installed in a "computer" where the operating system is already installed.

Similarly, you can think of a container as the "computer" with the image hard disk installed. The container, just like a computer, can be powered on or off.

Docker terminology🔽

Container image:

A package with all the dependencies and information needed to create a container. An image includes all the dependencies (such as frameworks) plus deployment and execution configuration to be used by a container runtime. Usually, an image derives from multiple base images that are layers stacked on top of each other to form the container's filesystem. An image is immutable once it has been created.

Dockerfile:

A text file that contains instructions for building a Docker image. It's like a batch script, the first line states the base image to begin with and then follow the instructions to install required programs, copy files, and so on, until you get the working environment you need.

Build:

The action of building a container image based on the information and context provided by its Dockerfile, plus additional files in the folder where the image is built. You can build images with the following Docker command:

docker build
Enter fullscreen mode Exit fullscreen mode

Container:

An instance of a Docker image. A container represents the execution of a single application, process, or service. It consists of the contents of a Docker image, an execution environment, and a standard set of instructions. When scaling a service, you create multiple instances of a container from the same image. Or a batch job can create multiple containers from the same image, passing different parameters to each instance.

Volumes:

Offer a writable filesystem that the container can use. Since images are read-only but most programs need to write to the filesystem, volumes add a writable layer, on top of the container image, so the programs have access to a writable filesystem. The program doesn't know it's accessing a layered filesystem, it's just the filesystem as usual. Volumes live in the host system and are managed by Docker.

Tag:

A mark or label you can apply to images so that different images or versions of the same image (depending on the version number or the target environment) can be identified.

Repository (repo):

A collection of related Docker images, labeled with a tag that indicates the image version. Some repos contain multiple variants of a specific image, such as an image containing SDKs (heavier), an image containing only runtimes (lighter), etc. Those variants can be marked with tags. A single repo can contain platform variants, such as a Linux image and a Windows image.

Registry:

A service that provides access to repositories. The default registry for most public images is Docker Hub (owned by Docker as an organization). A registry usually contains repositories from multiple teams. Companies often have private registries to store and manage images they've created. Azure Container Registry is another example.

Docker Hub:

A public registry to upload images and work with them. Docker Hub provides Docker image hosting, public or private registries, build triggers and web hooks, and integration with GitHub and Bitbucket.

Docker daemon:

Runs on host machine creates and manages docker objects such as images, containers, network, volume, data, etc.

Docker client:

UI for docker which accepts commands from user and communicate with docker host.

Docker taxonomy🔽

Docker

When using Docker, a developer creates an app or service and packages it and its dependencies into a container image. An image is a static representation of the app or service and its configuration and dependencies.

To run the app or service, the app's image is instantiated to create a container, which will be running on the Docker host. Containers are initially tested in a development environment or PC.

The registry is like a bookshelf where images are stored and available to be pulled for building containers to run services or web apps. There are private Docker registries on-premises and on the public cloud. Docker Hub is a public registry maintained by Docker.

Docker commands🔽

🌟Concept of Docker:

  • Build image
  • Ship image
  • Run image

🌟Docker Service:

First we have to start the docker daemon by

service docker start

To view status of the service use this command

service docker status

To stop service use this command

service docker stop

NOTE ~ if Docker was unable to find image on machine it will try to find on DockerHub

🌟Run an Image:

Run an image(hello-world) from DockerHub

docker run hello-world

hello-world is an image. we just made container from it. It will first try to find this image locally then on repository. Default repository is DockerHub

To check existing images

docker image ls

We can pull images from registry without making container of it with this command

docker pull hello-world

🌟List Containers:

To list all the containers

docker ps

By default it will only show running containers. To get all containers we can use

docker ps -a

To get container sizes use

docker ps -s

🌟Launching First Ubuntu Container:

Now we are going to run our Ubuntu container.

docker run -it ubuntu:latest bash
  • -it flag is for making it interactive.
  • We can also specify version I used latest version here.
  • Now we can select what we want to use we are using bash here.
  • After that we go inside container which contains Ubuntu
  • We can execute any ubuntu command that we want inside our containers
  • we can install anything that we can install on ubuntu
  • when we exit ubuntu & terminal with exit command we also exit from container

🌟Start Container:

Start container

docker start "container name/id"
  • To go inside container use command
  • 'Attaching to a container' is the act of starting a terminal session within the context that the container (and any programs therein) is running. This is primarily used for debugging purposes, but may also be needed if specific data needs to be passed to programs running within the container.
docker attach "container name/id"

To go inside container without stoping it use

ctrl q

🌟Help:

To get help on all docker commands

docker --help

To get help on docker container commands

docker container --help

To get help on docker image commands

docker image --help

🌟Removing Image/Container:

List containers

docker ps -a

List images

docker images

Remove container

docker rm "container id"

Remove image

docker rmi "image id"

Remove image forcefully

docker rmi -f "image id"

🌟Put container in tar:

To save hello-world container as hello-world.tar

docker save -o hello-world.tar hello-world:latest

To add hello-world to registry from tar

docker load -i hello-world.tar

🌟Changing image name:

  • To create a copy of image hello-world with name hello and add it to registry
  • But there image id would be same
docker tag hello-world:latest hello:2

🌟Commiting images to DockerHub:

First we have to commit our changes in that container

docker commit "image id"

now we have to change name of image

docker tag "image id" "dockerhub username"/"imagename":tag

now login to our docker account

docker login

push container image to dockerhub

docker push "dockerhub username"/"imagename"

Done now we can use this image to create containers

🌟Dockerfile:

Step 1- Create a dockerfile

vim dockerfile

Step 2- Write Directives

There are various directives of Dockerfile

FROM shows the base image for example

FROM python 2.7

WORKDIR sets the working directory

WORKDIR /app

COPY copies new files or directories to container

COPY ./app
  • RUN executes any command in new layer on top of current image and commit result
  • Install any needed package specified in requirments.txt
RUN pip install -r requirements.txt

CMD provide defaults for executing container

CMD python hello.py

Step 3- Build Image

Build docker image with command

docker build

⭐⭐Support me here so that i can provide more usefull content⭐⭐
And visit ankushgandhi.com for more usefull content

Buy Me A Coffee


My other Blogs

Discussion (2)

Collapse
amittomar profile image
Amit Tomar

Thanks for sharing this Ankush :)

Collapse
ankushsinghgandhi profile image
Forem Open with the Forem app