Bootstrap FreeKB - Docker - Build an image using a Dockerfile
Docker - Build an image using a Dockerfile

Updated:   |  Docker articles

This assumes you have installed Docker on Linux and Docker is running.

A Docker image contains the code used to create a Docker container, such as creating a Nginx web server, or a mySQL server, or a home grown app, and the list goes on. In this way, an image is like a template used to create a container. An image is kind of like a virtual machine, but much more light weight, using significantly less storage a memory (containers are usually megabytes in size).

 

There are various ways to pull down an image:

  • Using the docker pull command (as-is image as-is is pulled down)
  • Using the docker run command (as-is image is pulled down and container is created/started)
  • Using the docker build command (image can be customized)
  • Using the docker stack deploy command (Docker Compose)

 

Let's say you have an application named "foo" built to run on docker at /tmp/foo on your Linux server running Docker. This assumes that the foo application contains Dockerfile, like this.

/tmp/foo/Dockerfile

 

Let's say Dockerfile contains the following.

FROM alpine
CMD ["echo", "Hello World"]
RUN dnf update

 

Move into the directory that contains the Dockerfile.

cd /tmp/foo

 

Use the docker build command to create an image using the Dockerfile.

docker build --file Dockerfile --tag hello:latest .

 

If all goes well, something like this should be displayed.

Sending build context to Docker daemon  60.93kB
Step 1/2 : FROM alpine
latest: Pulling from library/alpine
5843afab3874: Pull complete 
Digest: sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0
Status: Downloaded newer image for alpine:latest
 ---> d4ff818577bc
Step 2/2 : CMD ["echo", "Hello World"]
 ---> Running in 48e081c376be
Removing intermediate container 48e081c376be
 ---> fb60d5e3e7c8
Successfully built fb60d5e3e7c8
Successfully tagged hello:latest

 

The docker images command can be used to display the images.

docker images

 

Which should return something like this.

REPOSITORY  TAG     IMAGE ID      CREATED             SIZE
hello       latest  fb60d5e3e7c8  About a minute ago  5.6MB

 

Then the docker run command can be used to create the container.

docker run -rm hello

 

And the following should be returned.

Hello World

 

Finally, the docker rmi command can be used to remove the image.

docker rmi hello

 

Which should return the following.

Untagged: hello:latest
Deleted: sha256:fb60d5e3e7c8d4b5396d3117cac38a88c4ac4f6b5079a47250f8c65de0281683

 

Here is a slighly more practical Dockerfile.

FROM node:6.11.5

WORKDIR /usr/src/foo
COPY foo.json .
RUN npm install
COPY . .

CMD [ "npm", "start" ]

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter 8237d7 in the box below so that we can be sure you are a human.