イメージの構築は、DevOps プロセスにおいて非常に重要なプロセスです。一般的に、イメージの構築とは、dockerfile ファイルを作成し、docker クライアントを通じてイメージを構築することを意味します。 Docker クライアントは、まずローカルにイメージがあるかどうかを確認し、ない場合はイメージ リポジトリからイメージを取得します。 次に、作成した Dockerfile を解析して新しいイメージを構築します。 この記事は理解するのに役立ちます
次の記事では以下について説明します。 Docker を使用しない場合、イメージを構築するにはどうすればよいでしょうか? 例として、Microsoftのaspnet2.2をベースとしてaspnetcoreプロジェクトのイメージを構築します。 mcr.microsoft.com/dotnet/core/aspnet:2.2 ベースイメージREGISTRYに従ってメインフェスト情報を取得します https://mcr.microsoft.com/v2/dotnet/core/aspnet/manifests/2.2 受け入れる: アプリケーション/vnd.oci.image.manifest.v1+json、アプリケーション/vnd.docker.distribution.manifest.v2+json、アプリケーション/vnd.docker.distribution.manifest.v1+json 取得した内容は以下のとおりです。 { "スキーマバージョン": 2, "メディアタイプ": "application/vnd.docker.distribution.manifest.v2+json", 「設定」: { "メディアタイプ": "application/vnd.docker.container.image.v1+json", 「サイズ」: 4039, 「ダイジェスト」: 「sha256:e7e3b238011ce0f2b9350153535fe273caa01f0e7188d0b91f965b3802ddc600」 }, 「レイヤー」: [ { "メディアタイプ": "application/vnd.docker.image.rootfs.diff.tar.gzip", 「サイズ」: 22524609, 「ダイジェスト」: 「sha256:804555ee037604c40de144f9f8da0d826d38db82f15d74cded32790fe279a8f6」 }, { "メディアタイプ": "application/vnd.docker.image.rootfs.diff.tar.gzip", 「サイズ」: 17692725, 「ダイジェスト」: 「sha256:970251047358aea56ba6db6975b14ff12470b75de0c2477f4445240ddd727fd4」 }, { "メディアタイプ": "application/vnd.docker.image.rootfs.diff.tar.gzip", 「サイズ」: 2978257, 「ダイジェスト」: 「sha256:f3d4c41a4fd13f35c0b46f19a4e27845f4695163cc7174d908ff84836bbc2f5a」 }, { "メディアタイプ": "application/vnd.docker.image.rootfs.diff.tar.gzip", 「サイズ」: 62145592, 「ダイジェスト」: 「sha256:bd391c46585f9f8d84992bbaa9087189148c1601968eaaf097d5b3ed60840e5e」 } ] } mainfestファイルにはダイジェストレコードが含まれています
上記の構成情報の概要に基づいて構成の詳細を取得します 取得:https://mcr.microsoft.com/v2/dotnet/core/aspnet/blobs/sha256:e7e3b238011ce0f2b9350153535fe273caa01f0e7188d0b91f965b3802ddc600 { "アーキテクチャ": "amd64", 「設定」: { "ホスト名": "", "ドメイン名": "", "ユーザー": "", "AttachStdin": false、 "AttachStdout": false、 "AttachStderr": false、 「端末」: 偽、 "OpenStdin": 偽、 "StdinOnce": 偽、 「環境」: [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "ASPNETCORE_URLS=http://+:80", "DOTNET_RUNNING_IN_CONTAINER=true", "ASPNETCORE_VERSION=2.2.8" ]、 「コマンド」: [ 「バッシュ」 ]、 "ArgsEscaped": true、 「画像」: 「sha256:5ecfe4016ac8e911a94aa601a675f7204e9ccab00cbb08e7067c184ad40f34e9」、 「ボリューム」: null、 "作業ディレクトリ": "", 「エントリポイント」: null、 "OnBuild": null、 「ラベル」: null }, 「コンテナ」: 「14196c2f9c327d41e26682d32c7c89c4e7c78aa32f8b7501a23192035a9f4844」、 "コンテナ構成": { "ホスト名": "", "ドメイン名": "", "ユーザー": "", "AttachStdin": false、 "AttachStdout": false、 "AttachStderr": false、 「端末」: 偽、 "OpenStdin": 偽、 "StdinOnce": false、 「環境」: [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "ASPNETCORE_URLS=http://+:80", "DOTNET_RUNNING_IN_CONTAINER=true", "ASPNETCORE_VERSION=2.2.8" ]、 「コマンド」: [ "/bin/sh", "-c", "aspnetcore.tar.gz https://dotnetcli.azureedge.net/aspnetcore/runtime/ $aspnetcore_version BE69ACB7E277DF2C243F931E10529DEF21DCBF9CE277609B30D462126BF8B8B3CAB36476BEC3D63A927B8E44E59E4D4D4CADE23EEF4596FBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDET 12 aspnetcore.tar.gz \ "| sha512sum -c - && mkdir -p/usr/share/dotnet && tar -zxf aspnetcore.tar.gz -c/usr/share/dotnet && rm aspnetcore.tar.tar.&&ln -s/usr/usr/dotnet/dotnet ]、 「画像」: 「sha256:5ecfe4016ac8e911a94aa601a675f7204e9ccab00cbb08e7067c184ad40f34e9」、 「ボリューム」: null、 "作業ディレクトリ": "", 「エントリポイント」: null、 "OnBuild": null、 「ラベル」: null }, "作成日": "2019-12-28T08:12:05.676492579Z", "docker_version": "3.0.8", "歴史": [ { "作成日": "2019-12-28T04:23:47.4966447Z", "created_by": "/bin/sh -c #(nop) / にファイル:90a2c81769a336bed3f731f44a385f2a65b0916f517a0b77c06c224579bf9a9a を追加します" }, { "作成日": "2019-12-28T04:23:47.719507596Z", "created_by": "/bin/sh -c #(nop) CMD [\"bash\"]", "空のレイヤー": true }, { "作成日": "2019-12-28T08:11:05.607009582Z", "created_by": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates libc6 libgcc1 libgssapi-krb5-2 libicu57 liblttng-ust0 libssl1.0.2 libstdc++6 zlib1g && rm -rf /var/lib/apt/lists/*" }, { "作成日": "2019-12-28T08:11:07.64336022Z", "created_by": "/bin/sh -c #(nop) ENV ASPNETCORE_URLS=http://+:80 DOTNET_RUNNING_IN_CONTAINER=true", "空のレイヤー": true }, { "作成日": "2019-12-28T08:11:16.475068844Z", "created_by": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/*" }, { "作成日": "2019-12-28T08:11:43.814078508Z", "created_by": "/bin/sh -c #(nop) ENV ASPNETCORE_VERSION=2.2.8", "空のレイヤー": true }, { "作成日": "2019-12-28T08:12:05.676492579Z", "created_by": "/bin/sh -c curl -SL --output aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$ASPNETCORE_VERSION/aspnetcore-runtime-$ASPNETCORE_VERSION-linux-x64.tar.gz && aspnetcore_sha512='954072376698be69acb7e277df2c243f931e10529def21dcbf9ce277609b30d462126bf8b8b3cab36476bec3d63a927b8e44e59e4d4cade23eef45956fba1ffd' && echo \"$aspnetcore_sha512 aspnetcore.tar.gz\" | sha512sum -c - && mkdir -p /usr/share/dotnet && tar -zxf aspnetcore.tar.gz -C /usr/share/dotnet && rm aspnetcore.tar.gz && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet" } ]、 "OS": "Linux", "ルートファイル": { "タイプ": "レイヤー", "diff_ids": [ "sha256:814c70fdae62bc26c603bfae861f00fb1c77fc0b1ee8d565717846f4df24ae5d", "sha256:0cf75cb98eb2e0a82631d4aff71b40ba79ff7f83e0361f696875e592a1a4cefc", "sha256:15e45d99c92686fb1fd61a41431d8400d7a0e8381595d09d666b0809c4f5d993", 「sha256:579a8f1d6a123f98095c0b1a1395079f7504391fd2a8bc529dede305a2072a36」 ] } } diff_idsに応じて対応するレイヤーをダウンロードします ダウンロード後、概要を比較して画像ファイルの正当性を確認します。 パスルール: https://mcr.microsoft.com/v2/dotnet/core/aspnet/blobs/sha256:XXXXXX イメージの構築ベースイメージの構成に基づいてカスタム構成を追加します
ベースイメージのすべてのレイヤーに、イメージをパッケージ化するレイヤーも作成します。 生成されたイメージtarballを解凍する 追加の tar.gz ファイルがあります。解凍すると、パックしたファイルが含まれます。
config.json とベースイメージの比較 イメージをビルドするプロセスを確認し、イメージ名に応じて mainfest をプルしてみましょう。
原理を理解したら、プロセス全体を実装するツールを書くことができます。 私のオープンソースのDockerイメージビルドを使用すると、Dockerをインストールせずにコンテナイメージをすばやく構築できます。 基本的なイメージ構築として以下のイメージリポジトリをサポートします
以上で、Docker イメージ構築の原理分析(Docker をインストールしなくてもイメージ構築は可能)の記事は終了です。Docker イメージ構築の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明
1. まず、TomcatログのエンコーディングとIdeaログ表示コンソールのエンコーディングを区別す...
目次1. Docker Composeとは何か、インストールして使用する方法2. DOCleverと...
これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。 1. ポップア...
ゼロ、背景今週の木曜日にたくさんのアラートを受け取りました。DBA に確認を依頼したところ、遅いクエ...
Windows 10 で MySql データベースの解凍バージョンをインストールするステップ 1: ...
目次ストアドプロシージャの概要ストアド プロシージャを使用する理由は何ですか?ストアドプロシージャの...
友人たちはいつも、Linux のプロセスを隠す方法を私に尋ねます。私は、どの程度隠したいのか、カーネ...
1. オーバーレイの概要オーバーレイとは、その名の通り、別の形で地図上に表示される、覆うことを指しま...
目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...
目次実験環境インストールと展開データベースをインストールして設定します (ここでは mariadb ...
コードをコピーコードは次のとおりです。リンクフォントサイズ: 12px;色: #000000;テキス...
この記事では、MySQL ビューの原理と使用法についてまとめます。ご参考までに、詳細は以下の通りです...
目次1. プロトタイプ2. プロトタイプチェーン2.1 コンストラクタ2.2 電話をかける/申し込む...
目次Zabbix カスタム監視 nginx ステータス1. ステータスインターフェースを開く2. 監...
概要インデックス作成は、MySQL で習得しなければならないスキルであり、MySQL クエリの効率を...