How to make a Docker image
Using a Docker image, you can build a Docker container. Then how can I make the image?
Docker images are from containers
Like each container from an image, a Docker image is also from a container so
it is essential to define how a container works on Dockerfile
.
FROM baseImage
RUN command
CMD ["executable", "parameter"]
A sample structure of Dockerfile
looks like this.
First, choose baseImage
. A Docker image is consist of many layers and the basement of them is called baseImage
.
It is similar to a kind of OS in a certain image.
Second, run several commands. They contain additional installation, adding layers above the baseImage
.
(It is called layer caching.)
The final line is a start command.
You will run a container based on the contructed image and the start command will be executed.
The image below is steps after executing docker build ./
.
Dockerfile check a baseImage
first and make a temporary container.
The Docker server puts a snapshot and a start command in the container and make a target image.
If the image is created, the container is deleted.
Make a Dockerfile to execute a python script
I make a very simple python script file test.py
and a Dockerfile to execute it.
FROM python:latest
WORKDIR /usr/src/app
COPY test.py ./
CMD ["python", "test.py"]
There is two new commands: WORKDIR
is to set a working directory
and COPY
is to copy a local file to a container.
Setting the working directory first is important because the default position is on root.
There is a danger of overwriting and a managing inconvenience while running commands on root.
Copying files is also necessary to use local files in a container.
Containers cannot reach resources outside of them.
Make a Docker image with docker build ./
and run a container with docker run <IMAGE ID>
.
There is hello world!
at the bottom. Now you can make a Docker image to build your own environment!
Plus, for your convenience, you can give a certain name for the image: docker build -t <username>/<repository>/<project>:<version> ./
.
Like this!
References
💬 Any comments and suggestions will be appreciated.
Leave a comment