GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

GoogleContainerTools

distroless – 🥑 オペレーティングシステムを除いた、言語に焦点を当てたドッカー画像

投稿日:

🥑 オペレーティングシステムを除いた、言語に焦点を当てたドッカー画像。

「無差別」ドッカー画像

「無意味な」イメージには、アプリケーションとランタイム依存性だけが含まれます。 標準のLinuxディストリビューションで見つかるはずのパッケージマネージャ、シェル、その他のプログラムは含まれていません。

詳細は、このトークビデオ )を参照してください。

なぜ無秩序な画像を使うべきですか?

ランタイムコンテナの内容をアプリケーションに必要なものに正確に制限することは、長年にわたり本番環境でコンテナを使用してきたGoogleやその他の技術巨人が採用したベストプラクティスです。 スキャナ(CVEなど)の信号対雑音比を改善し、必要なものだけを提供する負担を軽減します。

無秩序な画像を使用するにはどうすればいいですか?

これらの画像は、 bazelツールを使用して作成されますが、他のDocker画像作成ツールでも使用できます。

ドッカー

ドッカーのマルチステージビルドは、無秩序な画像を簡単に使用します。 開始するには、次の手順を実行します。

ドッカーの例

goの簡単な例は次のとおりです。

# Start by building the application.
FROM golang:1.8 as build

WORKDIR /go/src/app
COPY . .

RUN go-wrapper download   # "go get -d -v ./..."
RUN go-wrapper install

# Now copy it into our base image.
FROM gcr.io/distroless/base
COPY --from=build /go/bin/app /
CMD ["/app"]

他の例をここで見つけることができます:

例を実行するには、言語のディレクトリに移動して実行します

docker build -t myapp .
docker run -t myapp

バゼル

bazelを使用してDockerイメージを生成する方法については、 bazelbuild / rules_dockerリポジトリを参照してください。

bazelパッケージマネージャールールの使用方法に関するドキュメントと例については、./package_managerを参照してください

このリポジトリのexamplesディレクトリに例があります。

Bazelの例

/ examplesディレクトリにいくつかの共通アプリケーションスタックを実行する方法に関するいくつかの例があります。 ここを参照してください:

画像内の一般的なタスクを完了する方法の例は、こちらをご覧ください。

これらの画像がどのように構築され、解放されるかの詳細については、ここを参照してください。

デバッグイメージ

無意味な画像は最小限で、シェルへのアクセスが不十分です。 :debug各言語用に設定された:debugイメージは、入力するビジーボックスシェルを提供します。

例えば:

cd examples/python2.7/

Dockerfileを編集して、最終イメージを:debugように変更しますDockerfile

FROM python:2.7-slim AS build-env
ADD . /app
WORKDIR /app

FROM gcr.io/distroless/python2.7:debug
COPY --from=build-env /app /app
WORKDIR /app
CMD ["hello.py", "/etc"]

シェルのエントリポイントを使ってビルドして起動します:

$ docker build -t my_debug_image .
$ docker run --entrypoint=sh -ti my_debug_image

/app # ls
BUILD       Dockerfile  hello.py

注: lddはシェルスクリプトとしてベースイメージにインストールされていないので、コピーしたりダウンロードしたりすることができます。







-GoogleContainerTools
-,

執筆者: