# How to Reduce Docker Image

<mark>The following are the methods by which we can achieve docker image optimization.</mark>

1. Using distroless/minimal base images
    
2. Multistage builds
    
3. Minimizing the number of layers
    
4. Understanding caching
    
5. Using Dockerignore
    
6. Keeping application data elsewhere
    

### **🔹<mark>Create One Ec2 instance i.e t2 micro.</mark>**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1684648838432/aed96ee7-a439-438a-bf49-69d7db849b40.png align="center")

### **🔹<mark>First Clone this project:-</mark>**

```plaintext
git clone https://github.com/kumarvimal349/springboot-crud-k8s.git
```

### **🔹<mark>Command :- ls</mark>**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1684649261184/194c3f06-9020-418b-85eb-d9d73a419812.png align="center")

### **🔹<mark>Install docker-engine on your Instance:-</mark>**

`Command:-`

```plaintext
apt-get install docker.io -y 
apt-get update -y
```

### **🔹<mark>Build Dockerfile ( without MultiStage):-</mark>**

```plaintext
FROM openjdk:8
EXPOSE 8080
ADD target/springboot-crud-k8s.jar springboot-crud-k8s.jar
ENTRYPOINT ["java","-jar","/springboot-crud-k8s.jar"]
```

Then run command :- docker build . -t spring-app

### **🔹<mark>Command :- Docker Images</mark>**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1684649972854/b7e45f17-096e-482b-8e57-06632f2e84f5.png align="center")

you see images size is 565MB which is very high, So we can reduce this image size..

### **🔹<mark>Build Dockerfile ( with MultiStage):-</mark>**

```plaintext
############# BASE IMAGE #################################
FROM openjdk:8 as build
WORKDIR /app
COPY . /app
############# MULTI STAGE IMAGE #################################
FROM openjdk:8-jdk-alpine as main
COPY --from=build /app /
EXPOSE 8080
ADD target/springboot-crud-k8s.jar springboot-crud-k8s.jar
ENTRYPOINT ["java","-jar","/springboot-crud-k8s.jar"]
```

Then run command :- docker build . -t spring-app-multistage

### **🔹<mark>Command :- Docker Images</mark>**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1684657646732/c239b41a-a8a8-416a-9e30-a8316949040b.png align="center")

**<mark>Image size is reduced to 217 MB..</mark>**

I hope this helps! Let me know if you have any questions.

I am Vimal kumar, Please do follow me here and support #devOps #trainwithshubham #github #devopscommunity #devops #cloud #devoparticles #docker #kubernetes #aws #kubeWeek

@[Vimal Kumar](@vimal658)

@[Shubham Londhe](@TrainWithShubham)
