DevOps Classroom Series – 23/Jun/2020

Docker References in the blog

Docker container and Image

docker image pull openjdk:8
vi Dockerfile

FROM openjdk:8
LABEL author="khaja"
LABEL version="0.2"
LABEL project="QT"
RUN wget https://referenceappkhaja.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java"]
CMD ["-jar",  "spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar"]

# build spring petclinic
docker image build -t spc:0.1 .
  • Now lets inspect images and focus of Layer
docker image inspect openjdk:8
docker image inspect spc:0.1

Preview Preview Preview

  • Docker image is collection of docker layers
  • When are layers created?. Mostly they are created when the content is changed (Executing RUN,COPY,ADD instruction). Lets experiment to create a new docker image spc:0.2
FROM openjdk:8
LABEL author="khaja"
LABEL version="0.2"
LABEL project="QT"
RUN wget https://referenceappkhaja.s3-us-west-2.amazonaws.com/spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar
RUN mkdir /test
EXPOSE 8080
ENTRYPOINT ["java"]
CMD ["-jar",  "spring-petclinic-2.2.0.BUILD-SNAPSHOT.jar"]
  • Now verify the image layers with openjdk:8 and you should see 2 layers.
  • So creating too many layers is not optimal. Use RUn statement carefully
  • The docker image layers are readonly
  • Try to create 2 container with spc:0.2
docker container run -d -P spc:0.2
docker container run -d -P spc:0.2
  • When we create a container, an extra R/w layer is created. All the changes done in that container will be stored in R/W layer. When we delete the container the R/W layer gets deleted. So in Docker to preserve changes done inside container we need to take extra measure (Volume)

Stateful and Stateless Application

  • Stateful applications use local storage to preserve application data/config
  • Stateless applications don’t use local storage, they rather store the state(application/data) in database/external system
  • Docker is used in both stateful and stateless applications.
  • Ensure extra caution in stateful applications.

Experiments

  • Try whoami and pwd commands in the following containers and observe the behavior
docker container run -it openjdk:8 /bin/bash
docker container run -it jenkins /bin/bash
docker container run -it tomcat:8 /bin/bash

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Floating Social Media Icons by Acurax Wordpress Designers

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube