【问题标题】:What is the best / correct way to export Docker image with reduced size以减小大小导出 Docker 映像的最佳/正确方法是什么
【发布时间】:2018-06-10 14:03:14
【问题描述】:

我的任务是使用 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 上导入应用程序的正确步骤是什么)

非常感谢

【问题讨论】:

    标签: docker spring-boot docker-compose dockerfile


    【解决方案1】:

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

    为了最小化 docker 镜像的大小,您可以使用 jre 镜像(例如,openjdk:8-jre-sim 的大小只有 205 MB 左右)。您可以通过构建自己的方式进一步减少 jre 图像,其中一个教程可以在 here 找到。不过提升不大,建议你使用官方的jre镜像。

    【讨论】:

    • 谢谢,我需要保存并导出这 2 个“tar”文件(用于图像和容器),还是只保存到图像就足够了?我需要向其他人(Docker)提供什么我的应用程序将在那里运行......?
    • 只有一个就够了。基本图像已经嵌入结果构建的图像中。
    • 基础镜像是“docker save docker-test > docker_test_image.tar”?还是“docker export docker_container > docker_container.tar”?
    • 基础镜像是你在Dockerfile中FROM ...语句中提到的那个。在您的示例中,它的 openjdk:8。简而言之,你只需要分享你的 docker-test 镜像。
    • 谢谢,在我保存图像之前的最后一个问题,我需要运行“Docker”还是不影响保存结果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2023-03-24
    相关资源
    最近更新 更多