我想用Docker测试我的应用程序.所以,我在Dockerfile中有这个:
FROM python:3-onbuild
CMD [ "python", "./test.py" ]
Run Code Online (Sandbox Code Playgroud)
test.py:
print(123)
Run Code Online (Sandbox Code Playgroud)
然后我跑:
docker build -t my_test_app .
Run Code Online (Sandbox Code Playgroud)
所以,我有一个大的形象.docker images
返回:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
python 3-onbuild b258eb0a5195 8 days ago 757 MB
Run Code Online (Sandbox Code Playgroud)
为什么文件大小如此之大?
该文件大小是否正常?
我刚刚在我的机器上检查了标准的 ubuntu:trusty 图像是 188 MB,而包含所有 python 内容的图像是 480MB。我经常看到 800MB 的图像,这些图像通常包含一些有意义的应用程序。
然而,这些镜像基于我们的私有镜像,官方 Docker 库镜像由于某种原因看起来要大得多。他们意识到这一事实并正在努力减少它。看看关于这个主题的讨论here
如果您需要更小的图像,请尝试使用这个“rouge8/pythons”,它大约小 100MB。
rouge8/pythons latest … 680.3 MB
Run Code Online (Sandbox Code Playgroud)
请记住,docker 图像被安排为分层的层结构。因此,如果您为许多容器重用相同的底层基础映像,则每个单独的容器添加的大小都非常小。它只是基础加上您添加到特定容器中的任何内容之间的差异。
对于Docker,Alpine Linux是一个非常精简的发行版。如果没有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"]
Run Code Online (Sandbox Code Playgroud)
而且,它的维护非常好。
您可以尝试使用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
Run Code Online (Sandbox Code Playgroud)
在撰写本文时,官方图像似乎-alpine
在所有python版本上均受支持。
https://hub.docker.com/_/python/
归档时间: |
|
查看次数: |
5427 次 |
最近记录: |