Docker is an opensource tool used for virtualization and deliver software in the form of packages called Containers. It is one of the most important tools used in networking domain. Dockerfile is a template for building the image which contains commands needed to package the software. In this post, I am going to explain the commands FROM, RUN, LABEL, EXPOSE used in Dockerfile. In Dockerfile, each command will be a layer.
FROM Command:
FROM command is used to specify base image. Usually base images from public repositories are pulled and being used. One can search for base images by clicking here. Common usage of FROM will be like FROM <Image_Name>:<Tag>. Tag is optional. If tag is not specified, default tag will be latest.
Some examples of FROM command with common images:
- FROM ubuntu:14.04
- FROM ubuntu:16.04
- FROM centos:7
RUN Command:
RUN command is used to run command on top of current image and the resultant image will be used further. One example will be creating users on Ubuntu Linux base image. There are two ways of using RUN command to accomplish the same.
- RUN useradd –mu 1001 demo - Creates user demo with user id 1001 and home directory as /home/demob
- RUN [“useradd”,”-mu”,”1001”,”demo”] - Does the same as above. Here command and arguments are passed like a List
LABEL Command:
LABEL command is primarily used to add meta data to an image. For example, we can add author of the image, build date as labels. Labels are added using Key Value pairs. If the value contains space, enclose them in double quotes. Also, one can add multiple labels in single layer of docker image. Below line shows the LABEL command usage. The first line shows adding single label in single layer. The second line shows adding multiple labels in single layer.
- LABEL version="latest"
- LABEL DESCRIPTION="Label for Demo Purpose"\
To check the labels and their values after building images, use the command docker inspect –format='{{json .Config.Labels}}' image_name_or_id
EXPOSE Command:
EXPOSE command is used to specify the list of ports of a container listening at the runtime. While exposing the port, if the protocol is not specified, the default protocol will be TCP. Below lines the EXPOSE command usage.
- EXPOSE 4000/udp means exposing 4000 port to listen on UDP protocol
- EXPOSE 4000/tcp means exposing 4000 port to listen on TCP protocol
- EXPOSE 4000 means exposing 4000 port to listen on TCP protocol
To check the exposed ports after building images, use the command docker inspect –format=’{{json .Config.ExposedPorts}}’ image_name_or_id
Comments
Post a Comment