alpineの作成の最小のdockerのミラー像
4690 ワード
dockerを使ってサービスを実行して、あなたは一致した環境を持つことができて、正確にサービスの運行の資源(cpu、メモリ)を制御することができて、便利な設定のポートとネット、鏡像の倉庫管理とコードを配布することができます.今はますます多くの開発者がサービスをdockerに実行することを選択しています.
多くのnodejsユーザーがdockerを使う時、直接デフォルトのnodeイメージを使いました.でも大きすぎると思いませんか?今node:6.10.1ミラーの体積はすでに666 Mに達しました.実は同じ機能を実現するには43.5 Mだけで十分です.サイズが小さいということは、より低いリソース消費、より速いダウンロード速度、より小さい伝送帯域幅を意味する.ここでは、簡単なノドミラーを作成する方法を紹介します.
FROM:alpineベースミラーを設定します.
現在、dockerの下で一番軽い操作システムはalpineで、一つのalpineの体積は5 M未満です.nodeのデフォルトのミラー依存の基礎ミラーはdebianで、
RUN:nodeコンパイルツールのインストール appk add--no-cacheはローカルキャッシュを使用してパケットデータベースをインストールしないで、直接に遠隔からインストールパッケージ情報のインストールを取得します.これで私達はappudateでインストールパッケージデータベースを取得する必要がなくなりました. app add-virtual.build-depsは、今回インストールしたすべてのパケットを.build-depsという仮想パケットにパッケージ化します.このようにする利点は、これらのパケットをappdel.build-depsのキーでクリアすることができる である.
RUN:nodeのソースパッケージを導入する公開鍵
RUN:ダウンロードとnode検査のソースファイルドルのNODE_VERION:nodeバージョン、例えば6.10.1 RUN:コンパイルインストールnode npmが必要でない場合は、第3の動作を置き換えることができます. ドルのNODE_VERION:nodeバージョン、例えば6.10.1 RUN:クリーンアップドルのNODE_VERION:nodeバージョン、例えば6.10.1 CMD:ミラーの入り口を設定してnodeです.
yarnをインストールインストール依存apped--no-cache--virtual.build-deps-yarn curl gnup 公開鍵を導入する ダウンロード検証 インストール .appdel.build-deps-yarn を整理します.
c++プラグイン
c+++プラグインをサポートするには、python、make、g++をインストールする必要があります.
一部のc++モジュールの使用中にもnode-headersファイルをダウンロードする必要があります.node-headersファイルは国内でダウンロードするのは不安定です.ミラーに統合することをお勧めします.そうしないと、コンパイルの長い間動かない状況に会うかもしれません. nodejsのソースコードを参照して、検査手順をダウンロードし、headersファイルをダウンロードして、curl-SLOをチェックします.https://nodejs.org/dist/v N O_D E V_E R_I O N/n o d e−v NODE_V ERSION/node−v{NODE VERRSION}−headers.tar.xz” headersファイルをインストールする
多くのnodejsユーザーがdockerを使う時、直接デフォルトのnodeイメージを使いました.でも大きすぎると思いませんか?今node:6.10.1ミラーの体積はすでに666 Mに達しました.実は同じ機能を実現するには43.5 Mだけで十分です.サイズが小さいということは、より低いリソース消費、より速いダウンロード速度、より小さい伝送帯域幅を意味する.ここでは、簡単なノドミラーを作成する方法を紹介します.
FROM:alpineベースミラーを設定します.
現在、dockerの下で一番軽い操作システムはalpineで、一つのalpineの体積は5 M未満です.nodeのデフォルトのミラー依存の基礎ミラーはdebianで、
debian:jessie
は体積が123 Mを打ったので、サイズを小さくしたいです.まず基礎ミラーからalpineに切り替えます.FROM alpine:3.5
RUN:nodeユーザを設定するadduser -D -u 1000 node
nodeを設定するユーザは任意です.ユーザーを追加してから、実行容器でnodeユーザを指定できるアイデンティティ実行サービスです.RUN:nodeコンパイルツールのインストール
apk add --no-cache \
libstdc++ \
&& apk add --no-cache --virtual .build-deps \
binutils-gold \
curl \
g++ \
gcc \
gnupg \
libgcc \
linux-headers \
make \
python
RUN:nodeのソースパッケージを導入する公開鍵
for key in \
9554F04D7259F04124DE6B476D5A82AC7E37093B \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
56730D5401028683275BD23C23EFEFE93C4CFFFE \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
これらの公開鍵は、curlを通じてダウンロードされたnodejsソースファイルを検証するために使用されます.RUN:ダウンロードとnode検査のソースファイル
curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.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.tar.xz\$" SHASUMS256.txt | sha256sum -c -
tar -xf "node-v$NODE_VERSION.tar.xz" \
&& cd "node-v$NODE_VERSION" \
&& ./configure \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install
apk del .build-deps \
&& cd .. \
&& rm -Rf "node-v$NODE_VERSION" \
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
CMD [ "node" ]
上はnodejsミラーを作成するためにステップが必要です.下の手順は必要に応じて追加します.yarnをインストール
for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
done
curl -fSL -o yarn.js "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-legacy-$YARN_VERSION.js" \
&& curl -fSL -o yarn.js.asc "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-legacy-$YARN_VERSION.js.asc" \
&& gpg --batch --verify yarn.js.asc yarn.js \
&& rm yarn.js.asc
$YARN_VERSION: yarn , 0.22
mv yarn.js /usr/local/bin/yarn \
&& chmod +x /usr/local/bin/yarn \
c++プラグイン
c+++プラグインをサポートするには、python、make、g++をインストールする必要があります.
apk add --no-cache python make g++
headersファイル一部のc++モジュールの使用中にもnode-headersファイルをダウンロードする必要があります.node-headersファイルは国内でダウンロードするのは不安定です.ミラーに統合することをお勧めします.そうしないと、コンパイルの長い間動かない状況に会うかもしれません.
mkdir /root/.node-gyp
tar --strip-component 1 -xzf node-v${NODE_VERSION}-heraders.tar.xz /root/.node-gyp/$NODE_VERSION
rm -rf node-v${NODE_VERSION}-headers.tar.xz
$NODE_VERSION: node , 6.10.1
結論としては、最小のdockerのミラー像を作成するのは簡単で意義があります.