Importance of Tags in Docker
- Format is <image-name>:<tag>
- Ex: openjdk:8, jenkins:1.609.2
- In docker if the tag is not specified, LATEST is applied
FROM tomcat === FROM tomcat:LATEST
- note: in FROM instruction always specify tag and also while building images
Dockerfile instructions
Entrypoint
- Create a Dockerfile with some cmd
FROM openjdk:8
RUN wget https://war-jar-files.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
EXPOSE 8080
CMD ["java", "-jar", "spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar"]
- create a docker image (for tag use ddmmyy)
docker image build -t spc:280120 .
docker image build -t spc:1.0-280120
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
spc 1.0-280120 4c0dd4eb112b 59 seconds ago 536MB
spc 280120 4c0dd4eb112b 59 seconds ago 536MB
openjdk 8 8c6851b1fc09 5 days ago 488MB
# for spc:280120 and 1.0-280120 we have same image id, same image id means same image to docker
docker container run -d -p 8080:8080 spc:280120
# creates a new container and runs CMD from Dockerfile
docker container run -d -p 8081:8080 spc:280120 echo helloworld
# Creates a new container and CMD in Dockerfile will be overriden with echo helloworld
- Entrypoint instruction also executes when creating a new container, the differnce with CMD is ENTRYPOINT cannot be overriten.
- When you have written both ENTRYPOINT and CMD, ENTRYPOINT will be executable and CMD will be arguments
FROM openjdk:8
ENTRYPOINT ["echo"]
CMD ["hello"]
- Now if we run a container after creating the image (demo)
docker container run image
# hello
docker container run image how are you
how are you
- Containers will be alive as long as the command in ENTRYPOINT and CMD instruction is executing
Other instructions
- LABEL: This instruction adds metadata
FROM openjdk:8
LABEL author=khaja
LABEL org=qt
- ADD and COPY:
- These instructions are used to copy the external files (file from host or from http(s)) into the docker image
- ADD and copy both takes two arguments source and destination
- ADD can copy the contents from file system and URLs
- COPY can copy the contents only from file system
FROM openjdk:8
ADD https://war-jar-files.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar /spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
EXPOSE 8080
CMD ["java", "-jar", "spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar"]
Like this:
Like Loading...