Dockerizing
if we want to create images we need a file: Dockerfile.
It is a sort of assembler of different pieces. Each of this piece is a layer
It also specifies how the container will be built
SINTAX
FROM
Each Dockerfile must start with FROM.
It specifies the imagine from which to start. For instance:
FROM alpine:latest
ARG
In some case it is possible to add an variable to pass as an argument to the FROM command
for instance:
ARG IMG_VERSION=latest FROM alpine:${IMG_VERSION}
RUN
RUN command allows to execute one o more instructions, defined in bash command, in a new layer.
Adding in this way an immutable block to the image
CMD
CMD is the default instruction to execute the Container.
Basically it means that at the run of the container this instruction will be executed.
It is executed every time the container starts.
it is like the RUN command but the difference is that the RUN command is executed during the build, the CMD command is not included into the build, but it is executed every time the container is started.
Let’s try to create an image
create a folder in which we will create our artifacts
mkdir dockerfolder
inside this folder create the file Dockerfile
nano Dockerfile
and inside the file past this content:
ARG VERSION=3.8
FROM alpine:$VERSION
LABEL maintainer="gf@fconsulting.tech"
ARG VERSION
# RUN command in bash mode
RUN echo $VERSION
# RUN COMMAND in exec mode
RUN ["echo", "$VERSION" ]
CMD [ "/bin/sh"]
Now let’s remain in the same Dockerfile folder and execute the following command:
docker image build .
if everything went well, if you execute a docker image ls you should find the new image.
To create the image with a name and tag we should add -t to the build command, something like this:
docker image build . -t ourfirstimage:0.1