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
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文件名称 
    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

 

posted @ 2023-03-26 11:35  fengnovo  阅读(346)  评论(0编辑  收藏  举报