áŽáá´áááŽá˝ á áááŹá˝áá á¨ááá á¨áśááľáá áĽá á¨áľááá° ááá áĽááá˝ áá á áá¸á áá° á°ááŤáŠ á áŤáŁá˘áá˝ áááľá¨áľ á°ááŤá ááááśá˝ ááááá˘
áá á˝áá á¨áľááŞáá áĄáľ áá°áá áŞáŤá áá° ááŤáŁ áááľááŁáľ á¨á°ááŤáŠ ááááśá˝á áá¸áááá˘
- Docker áááá á áá áá Docker ááľá ááá á áŁ
- Cloud-Native Buildpacká á áá áá á¨OCI ááľá á¨ááአááá ááŁ
- áĽá áŁááĽá á°á¨á ááłáŞáŤáá˝á á áá áá á¨JAR áááá˝á áá° á°ááŤáŠ ááĽááĽáŽá˝ á ááá¨áľ á¨á ááľ ááľá áááťá¸áľá˘
á¨áŽáľ ááłá
áá
á˝áá á¨áľáŤ áŽáľ ááłá áá á áĽáŽ áááŁá
á¨ááŤáŁ áááľ
á á áááš ááľáĽ áĽá á áá á¨áááá á¨ááŤáŁ áááľá áĽááááŤáá-
- á¨ááŤáŁ ááľá: á¨á ááľ á¨á°áá°á á áá¸áľ ááá. á¨áááŁáł ááłáŞáŤáá á ááľáŹáľ áá°áá áŞáŤá˝áá áá° ááŤáŁ ááľá áĽááááŁáá.
- áŽáá´áááá¨ááŤáŁá ááľá áá°áá á á¨áá˝á ááłáá˘
- á¨ááŤáŁ áá°á: ááŤáŁáá áááľáŹáľ áááááľ áŤáá á¨á´áá áá°áľ.
- á¨ááŤáŁ á áľá°ááá : áŽáá´ááአáá°á á¨áá áŤá áľ á áľá°ááá áŽáááŠá°á.
- á¨ááŤáŁ ááááĽá¨ááŤáŁáá ááľá ááá°á áĽá ááá°áŤá¨áľ á¨ááŤáááá á á ááá áŚáłá˘
- OCI áá°á á:
áááľ áŽáá´ááá á°ááłá˝ááľ (OCI) á ááááľ áááá´á˝á ááľáĽ á¨á°ááá ááá ááĽá°áľ áŤáá áááľ á¨á áľá°áłá°á ááá á ááᢠááá á¨ááŤáŁ áá°áŽá˝ á ááááá á¨áááŁáł ááłáŞáŤ á¨á°áá አá¨áĽá ááŤá˘áŤ ááľáá˝á áááľ áĽáá°áá˝á ááá¨ááἠá¨OCI ááľá áááá ááŽáá´ááá ááľá áĽá á¨á ááľ áá á áá¸áśá˝ á¨á˘ááąáľáľáŞ á°á¨ááá˝á ááááťáá˘
á áááŹá˝áá áá° ááŤáŁ (áŽáá´ááá) áááľá¨áᣠá¨áĽáá áá°áá áŞáŤ á áŽáá´ááá ááľá áĽáá á áááá áĽá ááľáá áá° á¨á፠áááἠá¤áľ áĽáá°ááłááᢠá¨áŽáá´ááá á ááľ áá áá á ááľá á¨áááᥠááľáĽ á ááĽáś áááŁáąá áĽá áá°áá áŞáŤáá á ááľáĄ áŤáľáŹáłáá˘
á¨áľááŞáá áĄáľ áľáŞáľ 2.3 ᨠOCI ááľáá˝á áááá á á°á°áŞáá˝á áŤáááŁáá˘
á¨áĽá ááŤáŁ ááľá á áŁá áá ááááľ ááááŁáľ
áSááŞáá áĄáľ á áááŹá˝áá˝ Docker ááľáá˝á ááá á áĽááľ áááŞáŤáá˝á áá° Docker ááá á áá¨á á áŁá ááá ááá˘
ááááŞáŤ áá°áá á á¨áá˝á JAR ááá áĽáááĽáŤáá áĽá áĽáá° Docker ááá áááŞáŤáá˝ á áŤá á áľááááášá ááźáśá˝ á¨á°á ááá á áá á¨áááááá JAR ááá á áá á¨áłáá JRE ááľá áá áĽáááłááá˘
á¨áá°á áá°áá áŞáŤá˝áá á áá áĽááá á web
, lombok
и actuator
. á¤áá á ááá
á¨áĽ á¨áĽá¨ááľ áááŁá áŞáŤ áĽá¨á¨ááá ááᢠGET
áá´.
Dockerfile ááá á
á¨ááŤá áá
á áá°áá áŞáŤ á áá¨á ááŤáŁ áĽáá°áááá Dockerfile
:
FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/application.jar"]
á¨áĽá Docker ááá ᨠá¨áá á¨áľ ááľá ááá adoptopenjdk
á áአáá á¨áá á áááá˝áá áááĽá á áá°áĄá áĽáá¨ááłááᢠ8080
áĽáŤááá˝á á¨ááŤáłááĽ.
áááá¨áťáá á ááááŁáľ áá
ááááŞáŤ Maven ááá Gradle á áá áá áá°áá áŞáŤ ááá á áŤáľáááááłáᢠáĽáá áá¨á áĽáá áááá-
mvn clean package
áá ááá°áá áŞáŤá á°ááťá á¨áá á¨JAR ááá áááĽáŤáᢠá Docker áá°á áá áááľáŤáľ áá áá á°ááťá JAR áá° Docker ááľá áááἠá ááĽáá˘
á¨ááŤáŁ ááľá ááá á
á¨á፠áľáááá á ááľáŹáľ áá
áá á°ááťá ᨠJAR ááá áá° Docker ááľá áĽááľááá ááá docker build
á¨áá
áá°á á¨á°áá á¨áá Dockerfile á¨áŤáá á¨ááŽáááľ áľá áááŤáĄ-
docker build -t usersignup:v1 .
áľáááá á áá áá ááľáá˝áá á áááአááľáĽ áá¨áľ áĽáá˝ááá-
docker images
á¨áá áŤáá áľááá áá
ááľ á¨áĽáá ááľá áŤáŤáľáłá usersignup
á¨áá á¨áą ááľá áá ᣠadoptopenjdk
á áĽá Docker ááá ááľáĽ á°áááżá.
REPOSITORY TAG SIZE
usersignup v1 249MB
adoptopenjdk 11-jre-hotspot 229MB
á ááŤáŁ ááľá ááľáĽ ááĽááĽáŽá˝á áááá¨áą
á ááľá ááľáĽ áŤááľá á¨ááĽááĽáŽá˝ ááá áĽááᢠáĽáá áááá
dive usersignup:v1
á¨áłáá áľááá á¨áááá á¨áá¤áľ á áŤá áá¸áááĄ-
áĽáá°ááá¨áᣠá¨áá°áá áŞáŤá ááĽááĽá á¨ááľáá áá á ááá á¨áá ááá ááááᢠáĽáá° á¨áááťá¸áľ á áŤá á áá¨á°ááľ áááá˝ ááľáĽ á¨áá á ááĽááĽá áá á ááááľ áĽáááááá.
Buildpacká á áá áá á¨ááŤáŁ ááľá ááá á
á¨á°áá áááŁáł ááŹáá˝ áĽá á
ááľáá˝á áááá á Buildpacká áá áá á¨áá ááááš áĽá áá˝ á ááą ááᢠá¨ááľá áá á áááŚá˝ á ááĽá¨áá (ááá˘) ááľá°áłá°á áĽá ááá˘á á áá áá áá° ááá áá°áá áŞáŤáá˝ áá°áŤá áá˝ááá˘
á¨áááŁáł ááŹáá˝ á¨ááľá¨á áá á áĽáĽá á°áŁáĽááá. Cloud-Native Buildpacks ᨠOCI ááľá á áá¸áľá á áá°áá á ááľá¨áŽá˝ áá á°á¨ááá á¨á á á á á°áŤáá áŤáááŁá áá á ááľá á Docker áá°á áĽáá˛á°áŤ áŤá¨áááŁá.
á¨áá°á áĄáľ á°á°áŞá á áá áá
á¨áľááŞáá áĄáľ áááá Buildpacká á áá áá á¨OCI ááľáá˝á á¨ááአááááŁáᢠááľáá˝ á¨á°áá áŠáľ á áá áá ááᢠbootBuildImage
á°ááŁáŤáľ (ááŤáľá) ááá spring-boot:build-image
ááááá˝ (Maven) áĽá á¨á áŤáŁá˘ Docker áááľ.
á ááľáĽ áŤááá áľá á ááĽááľ áá° Docker áááἠá¤áľ áááááľ á¨ááŤáľááááá á¨ááľáá áľá áá ááľ áĽáá˝ááá image tag
:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>docker.io/pratikdas/${project.artifactId}:v1</name>
</image>
</configuration>
</plugin>
áĽáąá áááľáŤáľ Mavená áĽáá áá build-image
áá°áá áŞáŤá áááá á áĽá á¨ááŤáŁ ááľá áááá á ááŚá˝á˘ á áá
áá ááá Dockerfiles á áá áááá˘
mvn spring-boot:build-image
áá¤áą áĽáá°áá áŤá ááá áááá-
[INFO] --- spring-boot-maven-plugin:2.3.3.RELEASE:build-image (default-cli) @ usersignup ---
[INFO] Building image 'docker.io/pratikdas/usersignup:v1'
[INFO]
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base-platform-api-0.3' 0%
.
.
.. [creator] Adding label 'org.springframework.boot.version'
.. [creator] *** Images (c311fe74ec73):
.. [creator] docker.io/pratikdas/usersignup:v1
[INFO]
[INFO] Successfully built image 'docker.io/pratikdas/usersignup:v1'
á¨á áá˝á˘áą áľá áľááááłá á˘á paketo Cloud-Native buildpack
á¨áá°áŤ OCI ááľá áááá á áŤáááá áá áᢠáĽáá°á ááąáŁ áľáááá á ááľáŹáľ áĽáá° áśá¨á ááľá á¨á°áá¨áá¨áá ááľá áá¨áľ áĽáá˝ááááĄ-
docker images
áá áááŤ:
REPOSITORY SIZE
paketobuildpacks/run 84.3MB
gcr.io/paketo-buildpacks/builder 652MB
pratikdas/usersignup 257MB
Jib á áá áá ááŤáŁ ááľá ááá á
áἠá¨Google á¨áᣠá¨ááľá áá ፠áááá á˛áá á¨ááŤáŁ ááľá á¨ááá áŽáľ áááá á á ááŤá áá´á áá°áŁáá˘
á áááá áá jib-maven-plugin
á áá.xmláĄ-
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
á ááá á, á áááŹá˝áá áááááŁáľ áĽá á¨ááŤáŁ ááľá áááá á ᨠMaven áľáááá á áá áá á¨áἠáááá áĽáá°áŤáá. áĽáá°á ááąáŁ áĽáá ááá Docker áááá˝á áĽá¨á°á ááá á áá°áááĄ
mvn compile jib:build -Dimage=<docker registry name>/usersignup:v1
á¨áá áŤááá ᨠMaven áľááá á¨áá¸áá á áá á¨áá¨á°ááá áá¤áľ áĽááááá:
[INFO] Containerizing application to pratikdas/usersignup:v1...
.
.
[INFO] Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, io.pratik.users.UsersignupApplication]
[INFO]
[INFO] Built and pushed image as pratikdas/usersignup:v1
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
áá¤áą áĽáá°ááŤáłá¨á á¨ááŤáŁá ááľá ááá áŠá áĽá á áááᥠááľáĽ ááááĄá áá.
á¨á°ááťáš ááľáá˝á áááá á á°ááłá˝ááľ áĽá á´áááŽá˝
ááááťá¸áľ áááľ áá ááááŤáśá˝ á ááá˘
- áááłáááľ: á áŽáá´ááá áŚááŹáľáľáŤ á˛áľá°á ááľáĽ á¨áĽá ááŤá˘áŤ ááľá á¨ááľá áááἠá¤áľ áá° áŽáá´ááá áá°á áá°ááŤáá°á á áľá°ááá áááŁáᢠáá áá°áľ áĽá áľ áááŁáľ ááŁáá. áľááá ááľáá˝á á¨áááᥠááľáĽ áááŁáľ á áŽáá´ááá áŚááŹáľáľáŤ áľáááśá˝ áĽá á CI á§áá§áá˝ ááľáĽ á¨á á áá á¨ááá¨áľ ááá áŤáľááá.
- á°á áááľáľááá ááľáá˝ áá°áŤáááľ áľáá áŚáłá á áá¸áá˘
á¨áśá¨á ááľá á¨ááĽááĽáŽá˝ ááá á áááŁáĽáŤááłááłá¸áá á áĽá áśá¨áááá ááľáĽ áááŞáŤá áááááᢠáĽáŤááłááą á˝áá á áłá˝áá á˝áá áá áŤááľá áááŚá˝ á ááľ á´ááł áááááᢠá¨áśá¨á ááľá á¨áááᥠááľáĽ áľááá°áľ á ááĽááĽáŽá˝ á°áľáŚ á á áľá°ááá áá á°á¸áááá˘
áľááŞáá áĄáľ áá ááá
á¨áááťá¸áľ ááአá áááŹá˝áá á¨áľááŞáá áááá áĽááá˝ á á°áᨠá°á¨á á áááá áá áŤá°áŠáŤáá˘
á áĽááá á¨áááŤá JAR ááá á¨ááá á¨áĽááááľ ááĽááĽá á ááľ áá áĽáť áááś á á áľá°ááá áľáááą áá á°á°áĽááá˘
á áá°áá áŞáŤ ááťáťáŤ áĽá á ááŤáŁ áááááĽá áá áľ á¨áá°áá áŞáŤá ááá ááĽááĽá áĽáť ááłáŁáᢠá áá áĽáá áá áĽáá°ááłá¨ááĄ-
á áááĽááľ áááá˝ áĽááá á á¨á°ááťáš ááľáá˝ ááľááŞáá áĄáľ áá°áá áŞáŤ áĽáá´áľ ááá á áĽáá°ááá˝á áĽáááá¨áłááá˘
Buildpacká á áá áá ááľááŞáá ááľááť áá°áá áŞáŤ á¨á°ááťá¸ á¨áŽáá´ááá ááľá ááá á
áľááŞáá áĄáľ 2.3 áááŤá á¨áá á ááá áááá˝á áá° á°ááŤáŠ ááĽááĽáŽá˝ á áááŁáľ áá°áŤá¨áĽá áá°áááᢠá¨ááĽááĽá áŁá áŞá á ááŁáŞááľ á°á°áááá áĽá á¨Spring Boot Maven á°á°áŞá á áá áá á ááá ááááľ á áá áľá˘
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>
áá áá áá á¨áľ á áá áá á¨ááŤáŁ ááľáá˝áá á ááááŞáŤ Buildpack áĽá á ááá á á Docker á áá¨á°ááľ áááá˝ áĽááááŁááá˘
áĽáááá build-image
á¨ááŤáŁ ááľá áááá á Maven ááá:
mvn spring-boot:build-image
á áá¤áą ááľá áá áŤááľá ááĽááĽáŽá˝ ááá¨áľ áłááá áĽááŽáĽáŁ á¨áá°áá áŞáŤá ááĽááĽá (á áá á¨á°áááá) á áŞááŁááľ ááá ááľáĽ áááŤá á¨áá á á áá¸áľá á áá áá áŤáááá áá á˛áááá á áŁá áľáá˝ áááá áĽááŤááá˘
Dockerá á áá áá ááá°á áĄáľ áá°áá áŞáŤ á¨á°ááťá¸ á¨ááŤáŁ ááľá ááá á
ᨠMaven ááá Gradle áááá á¨áá ááᣠá¨á°ááŁá ᨠDocker JAR ááľá á¨Docker ááá áá ááá á áĽáá˝áááá˘
áśá¨áá áľáá áá ááĽááŚášá ááááŁáľ áĽá áá° áá¨á¨áťá ááľá ááá áłáľ áááľ á°á¨á᪠áĽááááá˝á áá¨ááá á ááĽá.
áá¨á á¨á°ááᣠá áá á¨á°á¨áá°á á¨áá á áááľ áá á áááľáááĄ-
META-INF/
.
BOOT-INF/lib/
.
BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.3.RELEASE.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx
áá¤áąá á¨á°á°á¨á á°á¨á᪠JAR áŤáłáŤá spring-boot-jarmode-layertools
и layersfle.idx
ááá. áá
á°á¨á᪠á¨JAR ááá á áááĽáá ááá áĽáá°á°ááá¸á á¨á°á°áŤá¨áĄ á¨áááá á á˝ááłáá˝á áŤáááŁáá˘
á ááá°áĽ ááĽááĽáŽá˝ áá áĽáááá˝á áááŁáľ
ááĽááĽáŽá˝á á¨á á¨á°ááŁá ᨠJAR ááá¨áľ áĽá ááááŁáľáŁ á¨áľáááąá áŁá
᪠áĽáá ááááᢠ-Djarmode=layertools
ááááá spring-boot-jarmode-layertools
JAR á¨áááá¨áťá ááá
áĄ-
java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar
áá áá áľáĽáá ááľáŹáľ áŤááľá á¨áľááá á ááŤáŽá˝á á¨áŤá áá¤áľ áŤáľááááĄ-
Usage:
java -Djarmode=layertools -jar usersignup-0.0.1-SNAPSHOT.jar
Available commands:
list List layers from the jar that can be extracted
extract Extracts layers from the jar for image creation
help Help about any command
áá¤áą áľáááášá áŤáłáŤá list
, extract
и help
Ń help
ááŁáŞ ááᢠáľáááá áĽááľáŹáľ list
á ááŤááĄ-
java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar list
dependencies
spring-boot-loader
snapshot-dependencies
application
áĽáá° ááĽááĽá áá¨áአá¨áá˝á á¨áĽáááá˝ áááá áĽáááá¨áłáá.
ááŁáŞ ááĽááĽáŽá˝áĄ
á¨ááĽááĽá áľá
áááśá˝
dependencies
áľáŞáą SNAPSHOT áŤááŤá ááááá áĽááááľ
spring-boot-loader
JAR áŤá áááá˝
snapshot-dependencies
áľáŞáą SNAPSHOT á¨áŤá ááááá áĽááááľ
application
á¨áá°áá áŞáŤ áááá˝ áĽá ááĽáśá˝
ááĽááĽáŽá˝ á¨á°ááášáľ á layers.idx
áá° áśá¨á ááľá áá¨áá áĽááłááŁá¸á á á
á°á á°á¨á°á ááá áŤáľááᢠáĽááá
ááĽááĽáŽá˝ á¨ááááŞáŤá áááś ááááľ á áá á á áľá°ááá ááľáĽ á°á°áĽááá ááááŤáąá á ááááĄá. á¨á°áááá á¨áá°áá áŞáŤ ááĽááĽá áĽáť áá° á áľá°ááá ááááłáᣠáá
á á á°ááá° áá á ááŁá ááᢠ.
áá° á°ááŤáŠ ááĽááĽáŽá˝ á¨á°áá°áą áĽááá˝ áá ááľá ááááŁáľ
á á°á áŤá áá´ á áá áá á¨áá¨á¨áťáá ááľá á áááľ á°á¨ááá˝ áĽááááŁáá
á¨áĽáá Dockerfile ááĽá á°á¨á áááŁáł áĽááľá°áŤááááĄ-
# the first stage of our build will extract the layers
FROM adoptopenjdk:14-jre-hotspot as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
# the second stage of our build will copy the extracted layers
FROM adoptopenjdk:14-jre-hotspot
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
áá
áá áá
á á á°áᨠááá ááľáĽ áĽááľááá ááá - Dockerfile2
.
áľáááá á áá áá Docker ááľáá áĽááááŁáá-
docker build -f Dockerfile2 -t usersignup:v1 .
áá áá áľááá á¨á¨á¨áľá á áá á¨áá¨á°ááá áá¤áľ áĽááááá:
Sending build context to Docker daemon 20.41MB
Step 1/12 : FROM adoptopenjdk:14-jre-hotspot as builder
14-jre-hotspot: Pulling from library/adoptopenjdk
.
.
Successfully built a9ebf6970841
Successfully tagged userssignup:v1
Docker ááľá á ááľá ááłáá፠á˛áá á áĽá á¨á፠áá፠á˛á°á¨á áá¨áľ áĽáá˝áááá˘
á áá¨á¨áťáᣠá á°áá á¨á Docker ááľá ááľáĽ áŤááľá ááĽááĽáŽá˝ áááá°á˝ á¨áłáá áľáááá áĽáá°á ááą áĽáá°áŤááᢠá¨ááľá ááłáá፠áá á¨áĽ ááá ááłáá áľááá áĽáá° ááĽá áľ áá፠ááľá áľ áĽáá˝ááááĄ-
dive userssignup:v1
á áá¤áą áá áĽáá°ááłá¨á, á áááŹá˝áá á¨áŤáá ááĽááĽá á áá 11 áŞáŁ áĽáť áá, áĽá áĽáááá˝ á á°áᨠááĽááĽáŽá˝ ááľáĽ á°á°áĽááá.
á ááá°áĽ ááĽááĽáŽá˝ áá ááľáŁá áĽáááá˝á áááŁáľ
ááá¸ááá áĽá áĽáááťá˝áá á áááŁáľ á¨áááá¨áťá áá á¨áá¸á ááá
áá° á°áᨠá°á¨á á áááŁáľ á¨áá°áá áŞáŤáá áĽáá¨á áá á ááááľ áĽáá˝áááᢠyml
á°ááłáłá ááá á°á°ááá layers.idx
:
- "dependencies":
- "BOOT-INF/lib/"
- "spring-boot-loader":
- "org/"
- "snapshot-dependencies":
- "custom-dependencies":
- "io/myorg/"
- "application":
- "BOOT-INF/classes/"
- "BOOT-INF/classpath.idx"
- "BOOT-INF/layers.idx"
- "META-INF/"
á áá
ááá ááľáĽ layers.idx
á¨á°á°á¨á áĽá áĽááááľ á ááááᣠio.myorg
á¨á፠áá¨ááť á¨áᥠá¨áľáá
áľ áĽááá˝á á¨áŤáá˘
áá°áá°ááŤ
á áá á˝áá ááľáĽ á¨ááŤáŁ ááľáá á ááĽáł á¨ááá áŽáľ áááááŁáľ Cloud-Native Buildpacks á á áá áá á°áááá°ááᢠáá á á°ááá°á ááááľ áśá¨áá á áá áá á¨ááŤáŁ ááľá áááá á á ááŤá ááᥠá ááááŞáŤ áááŤá á¨áá°áá á JAR ááá ááá á áĽá á¨ááŤá á Docker ááá ááľáĽ áááŞáŤáá˝á á áááá˝ áá° ááŤáŁ ááľá áá¸á.
áĽááá˝á áá° á°ááŤáŠ ááĽááĽáŽá˝ á¨áááľáľ á á áľá°ááá áá á¨á°á¸áá áĽá ááá á¨áá°áá áŞáŤ ááĽááĽá á áŽáá´ááá ááľáá¸á፠áá°áŽá˝ ááľáĽ á á°áŤáááľ á¨áá á°ááł áá á¨ááŤááá á¨ááĽááĽá áŁá áŞá á ááľáťá áĽáá˝áá áááťá¸áľá á°áááá°ááá˘
á á˝áá ááľáĽ áĽá
á áá á¨áááá áááá á¨ááá áŽáľ á áá ááááľ áá˝ááá˘
á¨áľáĽáá ááŁááť
á áá á˝áá ááľáĽ á¨á°á ááááŁá¸á á¨áľáĽááá˝ ááŁá áááá áĽááá˘
á¨á ááľ áá˝áłáľáĄ
docker system prune -a
Docker áááá á áá áá á¨ááŤáŁ ááľá ááá ááĄ-
docker build -f <Docker file name> -t <tag> .
á¨ááŤáŁáá ááľá á¨ááአáŽáľ (áŤá Dockerfile) áĽááááŁáááĄ
mvn spring-boot:build-image
á¨áĽááááľ ááĽááĽáŽá˝á áááá¨áąá˘ á¨áá°áá áŞáŤáá JAR ááá á¨ááááŁáą á ááľáŁ á¨ááĽááĽá áŁá áŞá á áá°á-áĄáľ-áá¨á-áááá ááľáĽ ááááąá áŤá¨áááĄáĄ-
java -Djarmode=layertools -jar application.jar list
á¨áĽááááľ ááĽááĽáŽá˝á áááŁáľ. á¨áá°áá áŞáŤáá JAR ááá á¨ááááŁáą á ááľáŁ á¨ááĽááĽá áŁá áŞá á áá°á-áĄáľ-áá¨á-áááá ááľáĽ ááááąá áŤá¨áááĄáĄ-
java -Djarmode=layertools -jar application.jar extract
á¨ááŤáŁ ááľáá˝á áááá áááá¨áą
docker images
á ááŤáŁá ááľá ááľáĽ á á፠á áŠá áááá¨áą (á¨áłáá ááłáŞáŤá ááŤáá áŤá¨áááĄ)
dive <image ID or image tag>
ááá: hab.com