Docker映像大小以及“ dnu restore”应该占用多少空间?

乔治·理查森

我有一个dockerized asp5 web api项目,该图像占用约918 MB的磁盘空间。我知道,由于Docker的性质,图像可能会变得很大,但从我很小的应用程序将600 MB的空间添加到原始aspnet5图像中似乎有点过头了。具体来说dnu restore,我的Dockerfile中步骤使映像大小增加了约500MB。我是否必须忍受这个?还是可以做些减小尺寸的事情?

这是我的project.json:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://*:5000"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "System.Diagnostics.Process": "4.1.0-beta-23409"
      }
    }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

我认为我在Web API项目的标准VS模板之上添加的唯一思路是该行。非常"System.Diagnostics.Process": "4.1.0-beta-23409"感谢您可以提供的任何帮助。这是我的Dockerfile:

FROM microsoft/aspnet:1.0.0-rc1-final-coreclr

RUN apt-get -qq update \
    && apt-get -qqy install nano postgresql-client s3cmd \
    && apt-get -y autoremove \
    && apt-get -y clean \
    && rm -rf /var/lib/apt/lists/*

COPY . /app

WORKDIR /app
RUN ["dnu", "restore"]


EXPOSE 5000

ENTRYPOINT ["dnx", "-p", "project.json", "web"]

这是我docker history的形象

IMAGE               CREATED              CREATED BY                                      SIZE                COMMENT
4ee2fb3cb020        35 seconds ago       /bin/sh -c #(nop) ENTRYPOINT &{["dnx" "-p" "p   0 B
24009ffd82e6        38 seconds ago       /bin/sh -c #(nop) EXPOSE 5000/tcp               0 B
9c46bb3859e9        51 seconds ago       dnu restore                                     526.6 MB
d536b68081ba        About a minute ago   /bin/sh -c #(nop) WORKDIR /app                  0 B
4f19849eea0a        About a minute ago   /bin/sh -c #(nop) COPY dir:cb4b00a5061a16f1f6   684.6 kB
b640bd0c52a2        2 days ago           /bin/sh -c apt-get -qq update                   && apt-get -qq      36.37 MB
8fa640275ee6        2 days ago           /bin/sh -c #(nop) ENV PATH=/usr/local/sbin:/u   0 B
e4f675d032df        2 days ago           /bin/sh -c LIBUV_VERSION=1.4.2                  && apt-get -q       2.406 MB
385c0bace97d        2 days ago           /bin/sh -c bash -c "source $DNX_USER_HOME/dnv   49.22 MB
7c9fafa077c3        2 days ago           /bin/sh -c curl -sSL https://raw.githubuserco   44.04 kB
2ae394ac9389        2 days ago           /bin/sh -c apt-get -qq update && apt-get -qqy   178.1 MB
b07742e812ff        2 days ago           /bin/sh -c #(nop) ENV DNX_RUNTIME_ID=ubuntu.1   0 B
e7d3e76b41ad        2 days ago           /bin/sh -c #(nop) ENV DNX_USER_HOME=/opt/DNX_   0 B
d0ee80de6cbb        2 days ago           /bin/sh -c #(nop) ENV DNX_VERSION=1.0.0-rc1-f   0 B
ea6bab360f56        7 days ago           /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B
5679b9b90e09        7 days ago           /bin/sh -c #(nop) ADD file:5afd8eec1dc1e7666d   125.1 MB
基兰·查拉(Kiran Challa)

您可以采用的另一种方法是发布应用程序,然后将发布的应用程序作为Docker映像的一部分:

示例:在这里我只想在Core Clr上运行我的应用

  • 运行dnu publish --framework dnxcore50 --out ../publishedoutput(在这里,我明确指定framework您的应用可以同时定位dnx451dnxcore50并且由于您确定要在Core Clr上运行,因此可以避免打包dnx451相关的软件包...这样可以减小图像尺寸)

  • 可用于以上发布目录上方的docker文件来创建docker映像。

    FROM microsoft/aspnet:1.0.0-rc1-final-coreclr
    COPY . /app/
    WORKDIR /app/approot
    EXPOSE 5004
    ENTRYPOINT ["./kestrel"]
    

更多信息:
恢复包大小是一样的应用程序的发布的数据包。
您可以通过打开还原的软件包来理解为什么会出现这种情况。例如,在以下情况下,已发布的软件包仅具有运行应用程序所需的内容。

恢复的JSON.NET包内容:在此处输入图片说明

发布的JSON.NET包内容:在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DNU Restore提供了许多“ HTTP请求超时”

在VSO构建上运行DNU Restore

Docker映像会占用大量空间吗?

Docker 1.7比Docker 1.5占用更多的映像空间

完成后,“预期的锁定文件不存在。请立即运行” dnu restore”。

“ DNU RESTORE”如何确定依赖项是否是项目引用而不是程序包引用?

为什么Docker映像会占用Docker不使用的磁盘空间

dnu恢复在Mac上失败

DNU从MSBuild发布--no-source

优化Docker映像大小

Docker占用的空间比容器,映像和卷的总和还要多

dnu restore返回路径错误''/用户/ <帐户名称> /。dnx / packages / Microsoft.AspNet.IISPlatformHandler / 1.0.0-rc1-final'被拒绝。'' 在OS X上

如何减少docker映像大小?

在Windows哪里找到'dnu'命令

我应该积极删除旧的Docker映像以清除磁盘空间吗?

Java HashSet <Long>应该占用多少内存

GPT分区表占用多少空间?

我的小文件要占用多少空间?

节点模块占用多少存储空间?

Homebrew 新安装占用多少空间?

安装N大小的APK需要多少空间?

什么是应用程序占用空间以及如何计算?

为什么Ubuntu docker基本映像仅占用89 MB?

Openstack VM上的docker bridge的理想MTU大小应该是多少?

如何查找“进程”占用的大小/内存空间

如何调整元素的大小并占用所有剩余空间?

如何增加分区的大小以占用未分配的空间

推送到ECR时,Docker映像与本地映像大小不同

减少Laravel 5.8的Docker映像大小