Docker中大小不一的python图片
我想用Dockertesting我的应用程序。 所以,我在Dockerfile中有这个:
FROM python:3-onbuild CMD [ "python", "./test.py" ]
test.py:
print(123)
然后我运行:
docker build -t my_test_app .
所以,我有一个大的形象。 docker images
返回:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE python 3-onbuild b258eb0a5195 8 days ago 757 MB
为什么文件大小如此之大?
这个文件大小是否正常?
我只是在我的机器上检查了标准的Ubuntu:可靠的图像是188 MB,所有的Python东西的图像是480MB。 我经常看到800MB的图像,通常是包含一些有意义的应用程序的图像。
但是,这些图像是基于我们的私人图像官方的Docker库图像由于某种原因似乎更大。 他们意识到这个事实,并试图减less这一事实。 看看这个话题的讨论
如果你需要一个小一点的图片,试试这个“rouge8 / pythons”,大概是100MB。
rouge8/pythons latest … 680.3 MB
请记住,docker图像是按层次结构排列的。 因此,如果您为许多容器重复使用相同的底层基础映像,那么每个单独的容器添加的大小都非常小。 它只是基础加上你添加到特定容器的任何东西之间的区别。
高山Linux是Docker非常精简的发行版。 没有Python,大约5MB。 用Python我得到60到120 MB之间的图像。 以下Dockerfile产生一个110 MB图像。
FROM alpine:3.4 RUN apk --update add \ build-base python-dev \ ca-certificates python \ ttf-droid \ py-pip \ py-jinja2 \ py-twisted \ py-dateutil \ py-tz \ py-requests \ py-pillow \ py-rrd && \ pip install --upgrade arrow \ pymongo \ websocket-client \ XlsxWriter && \ apk del build-base python-dev && \ rm -rf /var/cache/apk/* && \ adduser -D -u 1001 noroot USER noroot CMD ["/bin/sh"]
另外,它非常完美。
他们为数据库客户端,图像文件操作和XMLparsing库等东西添加了各种系统包。 这样,如果用户想要为psycopg2,MySQLdb,Pillow或lxml安装Python包,用户就不需要做额外的工作。 添加这些额外的软件包虽然意味着图像会更胖,如果你不需要这些软件包会浪费空间。
他们也不会试图从Python安装中删除那些并不真正需要的东西,比如所有的标准库testing代码目录。 即使.pyc文件也可以修剪,以节省空间,而不会有任何实际的影响,因为一个Web应用程序通常会在容器的整个生命周期中加载一次,所以.pyc文件并没有给您带来太多好处。
作为比较,看看“pythonX.Y-slim”变体和大小。 苗条的图像没有一个onbuild变种。
你也可以通过捆绑的Apache / mod_wsgi支持来查看我自己的Docker镜像。 这些都是修剪和依赖额外的包被安装的用户作为构build挂钩只有在必要时。 对于那些,特定于WSGI应用程序的Python 3.4 onbuild图像的大小是:
grahamdumpleton/mod-wsgi-docker python-3.4-onbuild ... 409.9 MB
给出的大小甚至包括Apache和mod_wsgi,给你一个适当的生产级WSGI服务器,能够处理静态文件内容等等。
如果没有运行WSGI应用程序,请改为从基本映像开始。
您可以在以下位置findmod_wsgi泊坞窗图像:
有关如何将这些图像用于WSGI应用程序以及为Python和WSGI应用程序构buildDocker镜像的各种博客文章可以从Docker集线器上的镜像描述中find。 也请留意我的博客网站,因为随着时间的推移,我将发布更多关于Docker和Python的内容。
是的,这是正常的尺寸。 该映像包含一个操作系统映像和各种软件包,这就是为什么大小。
你可以试试python:{version} -alpine版本。 它小得多:
>> docker image ls |grep python python 3.6-alpine 89.4 MB python 3.6 689 MB python 3.5 689 MB python 3.5.2 687 MB python 3.4 833 MB python 2.7 676 MB
在编写时,它看起来像所有python版本上的官方形象supoprts -alpine
。
- paho MQTT没有与docker容器进行响应
- Tensorflow对象检测在启动之前终止
- 在给定的docker-compose容器中执行Python脚本
- docker python SDK – pipe道输出到exec_run中的文件
- 我怎样才能恢复docker容器中运行的errbot的backup.py插件数据
- docker-compose在以普通用户身份运行时出现错误“ImportError:No module named ssl_match_hostname”
- Python:使用Docker而不是Virtualenv
- 为什么在Dockerfile中使用RUN安装自定义的python包不起作用?
- 芹菜在docker上不起作用