Docker containers have become the de facto way to manage software and dependencies in different environments. When working with real applications, there is no doubt that you’ll need to create a Dockerfile before you can build your applications container image.
Create Directory With
mkdir Command in a Container With Dockerfile
Apart from merely allowing developers to assemble commands necessary to create Docker images, there is so much more that we can do with Dockerfiles. To successfully create a Docker image using a Dockerfile, you must know some basic commands.
Some of the most used commands include:
FROM- Creates a layer of the parent image/base image that will be used.
WORKDIR- allows us to set the working directory.
COPY- allows us to copy current directory contents into a directory in the container.
PULL- Adds files from your Docker repository.
RUN- Command to be executed when we want to build the image.
CMD- specifies what command to run when the container starts.
ENV- Defines environmental variables used during the build.
ENTRYPOINT- specifies what command to run when the container starts.
MAINTAINER- Specifies the author of the image.
Using the commands above, we can create a Dockerfile such as the one below that uses Python as the base image.
# base image FROM Python # Set your working directory WORKDIR /var/www/ # Copy the necessary files COPY ./app.py /var/www/app.py COPY ./requirements.txt /var/www/requirements.txt # Install the necessary packages RUN pip install -r /var/www/requirements.txt # Run the app CMD ["echo", "Hello, Developer"]
This Dockerfile is part of a simple Flask application that only prints a message on the console. Here is the
requirements.txt file if you’d be interested in creating the same application.
click==8.0.4 Flask==2.0.3 gunicorn==20.1.0 itsdangerous==2.1.0 Jinja2==3.0.3 MarkupSafe==2.1.0 Werkzeug==2.0.3
The main file
app.py containing that main application file is shown below.
from flask import Flask app = Flask(__name__) def hello(): print("Hello, this is a simple Flask application") hello()
Now, to create a directory with the
mkdir command inside the file system of our Docker container, we will use the
RUN command as shown below.
# base image FROM Python # Set your working directory WORKDIR /var/www/ # Copy the necessary files COPY ./app.py /var/www/app.py COPY ./requirements.txt /var/www/requirements.txt # Install the necessary packages RUN pip install -r /var/www/requirements.txt RUN mkdir -p /var/www/new_directory # Run the app CMD ["echo", "Hello, Developer"]
RUN mkdir -p /var/www/new_directory allows you to create a directory named
new_directory inside the Docker file system that we will eventually build using an image built using the above Docker file.
However, we will begin by building a Docker image based on Python as the base image by running the command below.
isaac@DESKTOP-HV44HT6:~/my-app$ docker build -t new_image .
Confirm we have successfully built a Docker image from the Docker file using the
docker images command below.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE new_image latest 7ab964c50876 13 minutes ago 932MB
Now that we have a Docker image in place, we can go ahead and create a Docker container and confirm if the directory named
new_directory was created. As shown below, we will need to launch
Bash within the container to navigate directories within the Docker container.
$ docker run -it new_image bash root@ea42f35d5404:/var/www#
You’ll notice that the
new_directory was created after listing the files in this directory. In addition to this, we can also navigate the directory itself and even create new files within it.
root@ea42f35d5404:/var/www# ls app.py new_directory requirements.txt root@ea42f35d5404:/var/www# cd new_directory root@ea42f35d5404:/var/www/new_directory# ls root@ea42f35d5404:/var/www/new_directory# touch new_file root@ea42f35d5404:/var/www/new_directory# ls new_file