我正在尝试将 nodejs 应用程序作为 docker 容器运行。我想知道以下两个 Dockerfile 片段的性能或图像大小是否会有任何差异
From ubuntu:14.04
RUN apt-get install -y nodejs npm
和
FROM node:4.4.7
(假设安装的节点版本相同)
我的理解是,第一个将拉入一个 ubuntu 镜像并在其上安装节点。我不确定在第二种情况下会发生什么。这会根据 native 操作系统而有所不同吗?
最佳答案
hub.docker.com 上的节点包包括他们的 Dockerfile。它基于 Debian Jessie 环境,并从其他镜像中引入多个构建工具:
FROM buildpack-deps:jessie
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex \
&& for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 6.2.2
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
CMD [ "node" ]
您可以随时查看
docker history
有问题的图像以查看有关其来源的更多详细信息,但这并没有提供有关从添加和复制到图像中的内容的详细信息,这通常是创建基本图像的方式:$ docker history node:latest
IMAGE CREATED CREATED BY SIZE COMMENT
a6b9ffdcf522 5 weeks ago /bin/sh -c #(nop) CMD ["node"] 0 B
<missing> 5 weeks ago /bin/sh -c curl -SLO "https://nodejs.org/dist 41.51 MB
<missing> 5 weeks ago /bin/sh -c #(nop) ENV NODE_VERSION=6.2.0 0 B
<missing> 5 weeks ago /bin/sh -c #(nop) ENV NPM_CONFIG_LOGLEVEL=inf 0 B
<missing> 5 weeks ago /bin/sh -c set -ex && for key in 9554F0 78.62 kB
<missing> 5 weeks ago /bin/sh -c apt-get update && apt-get install 317.9 MB
<missing> 5 weeks ago /bin/sh -c apt-get update && apt-get install 122.6 MB
<missing> 5 weeks ago /bin/sh -c apt-get update && apt-get install 44.3 MB
<missing> 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 5 weeks ago /bin/sh -c #(nop) ADD file:5d8521419ad6cfb695 125.1 MB
关于docker - 用于运行 nodejs 应用程序的 2 种 Dockerfile 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38184676/