docker镜像体积优化,拉取最小化jre镜像并构建nodejs环境
镜像体积优化
优化前构建镜像体积:1.2GB
优化后构建镜像体积:621.63 MB
优化思路,1.centos镜像体积太大,有几百MB,使用alpine版本体积更小。2.只需要jre即可,无需jdk。
优化前
Dockerfile
FROM centos:centos7 WORKDIR /mydocker/jdk #创建一个存放jdk的路径 RUN mkdir /mydocker/jdk/jdk11 #将jdk压缩包复制并解压到容器中/mydocker/jdk/jdk11 ADD jdk-11.0.18_linux-x64_bin.tar.gz /mydocker/jdk/jdk11 #配置java环境变量 ENV JAVA_HOME /mydocker/jdk/jdk11/jdk-11.0.18 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$PATH RUN yum -y update; yum clean all RUN yum -y install epel-release; yum clean all RUN yum -y install nodejs npm; yum clean all ADD . /mydocker/jdk RUN cd /mydocker/jdk; npm install EXPOSE 3000
yaml文件
version: "3"
services:
app:
platform: linux/amd64
image: font_file_pick
container_name: font_file_pick
ports:
- "3000:3000"
build:
context: ./ # 指定dockerfile文件的所在路径
dockerfile: Dockerfile # 指定Dockerfile文件名称
volumes:
- ./:/home/node/app
command: npm run start
优化后
Dockerfile
FROM eclipse-temurin:17-jre-alpine WORKDIR /work RUN apk add nodejs npm COPY . /work RUN cd /work && npm install EXPOSE 3000
version: "3"
services:
app:
platform: linux/amd64
image: font_file_pick
container_name: font_file_pick
ports:
- "3000:3000"
build:
context: ./ # 指定dockerfile文件的所在路径
dockerfile: Dockerfile # 指定Dockerfile文件名称
command: npm run start
将docker容器保存为docker镜像(打成tar包)
· 将docker容器保存为 tar 包
docker commit <容器id> <镜像名>:<tag> ---- 将容器保存成镜像 保存后 docker images 便可以看到镜像 docker save -o <tar包名>.tar <镜像名>:<tag> ---- 将镜像保存为.tar文件,默认保存在当前目录
· 从 tar 包导入docker镜像
docker load -i <tar包名>.tar ---- 从 tar 包导入镜像 导入镜像后,通过 docker images 便可看到导入的镜像。 docker run -itd -p <本地端口>:<容器端口> <镜像名>:<tag> ---- 通过镜像起容器
· 案例
docker commit 294oajfhfnci font_file_pick:latest ---- 将294oajfhfnci容器保存为镜像font_file_pick docker save -o font_file_pick.tar font_file_pick:latest ---- 将镜像abcdef保存为font_file_pick.tar docker load -i font_file_pick.tar ---- 从 font_file_pick.tar 导入镜像 docker run -itd -p 3000:3000 --restart=always font_file_pick:latest ---- 通过font_file_pick镜像启动容器
安装nodejs方式: https://nodejs.org/en/download/package-manager#alpine-linux
参考文章
https://blog.csdn.net/qq_38603541/article/details/121286992