Managing Containers

We build images based on commands we give in the Docker file.

A Docker file is the text file that builds Docker images. This text file contains particular instructions about the container. To build a Docker file, follow the steps below.

For example,

FROM node --> from official node image in docker hub(this will be the base image)

WORKDIR ./app --> this will be the working directory of all containers built on the image, i.e. all, run, copy commands will be executed in the working directory

COPY package.json /app --> From where To where

RUN npm install --> install all the packages in package.json

COPY . /app --> copy all the folders in the current directory in the local machine to the container working directory(app)

CMD ['node','filename.js'] --> this statement will only get executed when we create container. The main purpose of the CMD command is to launch the software required in a container

Docker commands: What we type in the command prompt:

To create an image --> docker build.

Any command with --help will give you all associated commands with a description

We build containers based on image --> docker run <image_name>

docker run <image_name> will create new container based on image.

What if we want to start an existing container?

Use docker start <container_name>

Use docker stop <container_name>

There are two modes - attached(console.log is displayed) and detached mode(console.log is not displayed)

docker run <image_name> --> creates new container and prints all console.logs -->default is attach mode.

docker run -d <image_name> --> Run the container in detached mode - i.e., output printed by the container is not visible, the command prompt/terminal does NOT wait for the container to stop.

docker start <container_name> --> starts already existing and stopped container with default of detach mode(no console.log printed)

docker start -a <container_name> --> for attached mode

We can make it interactive(use giving input in terminal) through the -i flag before

Deleting images and containers

docker ps --> list all running container

docker ps -a --> list all running and stopped containers

docker images --> list al locally stored images

docker rm <container_name> --> removes the container

docker rmi <image_name> --> remove the image

One thing to note in removing images is that it does not have any containers including a stopped ones

Naming Image and Container

When we name a container, it is called Name, but it is called Tag when we name an image.

Tag consist of two parts - name:tag --> node(name):14(version)