About Dockerfile

If you are approaching Linux, especially Docker, you will find this article useful. In this article, SE Nguyen Ngoc Duc from NAL gives an overview of Dockerfile.

If you are approaching Linux, especially Docker, you will find this article useful. In this article, SE Nguyen Ngoc Duc from NAL gives an overview of Dockerfile.

A few basic commands commonly used in Docker

Before we start learning about Dockerfile, let's take a look at some common commands used in Docker.

docker pull image_name: Get an image from a Docker hub

docker run -it image_name /bin/bash: Run an image to create a new container

docker images: Lists the available images

docker rmi {image_id/name}: Delete an image

docker ps: Lists the running containers

docker ps -a: Lists containers that are disabled

docker rm -f {container_id/name}: Delete a container

docker start {new_container_name}: Start a container

docker exec -it {new_container_name} /bin/bash: Access the running container

What is a Dockerfile?

Simply put, a Dockerfile is a text file that contains a series of commands to help you build a docker image.

From the Dockerfile, you can see where the image was created from.

Next, we will show you how to create and run a Dockerfile.

. /demo to place the demo source code, which can be tested with cd. It will contain the following components

Create a Dockerfile

Dockerfile: Used to create an image to run the container.

App: The source code of the application to be run; after creating the Dockerfile, you can use the editor to actually program it, and all changes will be immediately updated in Docker.

Start.sh: Contains the command that will be executed when the container is enabled (like the example used to turn on the nginx server)

Now, let's start writing the Dockerfile

FROM ubuntu:18.04


RUN apt-get update

RUN apt-get install -y nginx


# ADD start.tar.gz /opt
# ADD start.sh /opt
COPY start.sh /opt

RUN chmod a+x /opt/start.sh

ENTRYPOINT ["/opt/start.sh"]


FROM: Reports who the parent of this image is. In other words, it reports where it came from. when Docker reads this command, it will check if the image ubuntu:18.04 already exists in the client. If it does not exist, Docker will automatically pull this image. ubuntu is the image name and 18.04 is the tag. It is literally the version.

Maintainer: Reports the name of the author of the Dockerfile to be created.

Run: Runs a specific command while the image is being created.

CMD: Runs a command while the container is enabled. There can be only one CMD statement in each Dockerfile. If there are multiple CMD statements, only the last statement will be executed.

ENTRYPOINT: Similar to CMD, but allows multiple commands to be executed while the container is running. You can write many of these commands into a single bash script file and then execute that file.

WORKDIR: Defines the directory for the CMD

EXPOSE: The container will listen on the port specified at runtime

Copy: Copies a folder from the local machine or host machine to the image.

Add: Similar to COPY, but also supports two other properties. First, you can copy using a URL. Next, you can extract a tar file to a specified directory.

VOLUME: Mounts a directory from the client to the container.

The above are the basic commands to build a Dockerfile.

How to use Dockerfile

Create an image from a Dockerfile.

docker build -t

Create a container from the image.

 docker run -v : -p : -it /bin/bash

-v: Displays the mouse volume. The data in the directory can be accessed from the container directory.

-p: The network port of the machine that connects to the container's network port.

-t: Run the container and open a terminal with / bin / bash

Demo run

docker build -t demo-dockerfile .
docker run -p 9000:80 -it demo-dockerfile /bin/bash

http://localhost:9000/ to see the result.

If you want to run the code in the app directory, run the following command: .

docker run -v /CompetencyMatrix/competency-matrix/developer-roadmap/docker/demo/docker-dockerfile/app:/var/www/html -p 9000:80 -it demo-dockerfile /bin/bash

You can edit the code directly in the app directory, or you can go tohttp://localhost:9000/ to see the changes.

Original article:https://media.nal.vn/dockerfile

Comments are closed.