以较小的尺寸导出Docker镜像的最佳/正确方法是什么?

时间:2017-12-30 13:20:47

标签: docker spring-boot docker-compose dockerfile

我的任务是使用Spring Boot + mongo嵌入模式创建简单的Java应用程序,然后将其保存并部署在Docker上。因此,其他人将拍摄此快照并在其本地环境中运行。但我有点混淆输出容器或图像的确切内容......

我的步骤: 1.创建Dockerfile

FROM openjdk:8
ADD target/docker-spring-boot-0.0.1-SNAPSHOT.jar docker-spring-boot-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","docker-spring-boot-0.0.1-SNAPSHOT.jar"]

2。

Create image

    docker build -f Dockerfile -t docker-test .

3

    vitalys-MBP:docker-spring-boot$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker-test         latest              644e2f818027        15 minutes ago      762MB
    openjdk             8                   7c57090325cc        2 weeks ago         737MB


//save on the image
docker save docker-test > docker_test_image.tar

//export on the container
docker export docker_container > docker_container.tar

我的问题是:

我看到每个.tar文件他们差不多760MB我真的不能发送1.5GB,也许我不需要导出容器或我在这里遗漏了什么? (在使用java运行的其他docker上导入应用程序的正确步骤是什么)

非常感谢

1 个答案:

答案 0 :(得分:2)

您所做的只是正确的。由于基本映像openjdk:8已经是737MB,因此您的应用程序仅为25 MB。您可以将构建的映像推送到docker-hub,并要求相应的用户从那里拉出来。当您尝试保存图像时,我认为您的用户可能无法从docker-hub获取。

为了最小化泊坞窗图像的大小,您可以改为使用jre图像(例如openjdk:8-jre-sim只有大约205 MB的大小)。您可以通过构建自己的图像来进一步减少jre图像,可以找到其中一个教程here。但是,没有太大的改进,所以我建议你使用正式的jre图像。