1.Dockerイメージの原則
1.オペレーティングシステムのコンポーネント
プロセススケジューリングサブシステム
プロセス通信サブシステム
メモリ管理サブシステム
デバイス管理サブシステム
ファイル管理サブシステム
ネットワーク通信サブシステム
ジョブ制御サブシステム
Linuxファイルシステムは2つの部分で構成されています:bootfsとrootfs
bootfs:ブートローダー(ブートローダー)とカーネル(カーネル)
を含むrootfs:ルートファイルシステム(一般的なLinuxでは/ dev、/ proc、/ bin、/ etcなどを含む)システム標準のディレクトリとファイル
異なるLinuxディストリビューションでは、bootfsは基本的に同じですが、rootfsは異なります(ubuntu、centosなど)。
2.Dockerイメージの原則
- Dockerイメージは特別なファイルシステムによってスーパーインポーズされます
- 下部はbootfsで、ホストのbootfsを使用します
- 2番目のレイヤーは、ベースイメージと呼ばれるルートファイルシステムrootfsです。
- 次に、他の画像ファイルを上にスタックできます
- Union File Systemテクノロジーは、異なるレイヤーを1つのファイルシステムに統合して、これらのレイヤーに統一された視点を提供し、複数のレイヤーの存在を隠すことができます。ユーザーの観点からは、ファイルシステムは1つだけです。
- 画像を別の画像の上に配置できます。下の画像は親画像と呼ばれ、下の画像がベース画像になります
- イメージからコンテナーを起動する場合、Dockerはコンテナーとして最上位に読み取り/書き込みファイルシステムをマウントします
3. Dockerイメージの本質
は、階層化されたファイルシステムです。
Dockerの場合
、centosイメージが200MBしかないのに、centosオペレーティングシステムのisoファイルに数Gが必要なのはなぜですか?
Centosのisoイメージファイルにはbootfsとrootfsが含まれていますが、dockerのcentosイメージはオペレーティングシステムのbootfsを再利用し、rootfsと他のイメージレイヤーのみを再利用します。Docker
のtomcatイメージが500MBであるのに、tomcatインストールパッケージはそれ以上であるのはなぜですか。 70MB以上?
dockerの画像は階層化されているため、Tomcatの容量は70 MBを超えますが、親画像とベース画像に依存する必要があります。公開されるすべてのTomcat画像のサイズは500MBを超えます。
4.ミラーの生産
コンテナは画像に変換されます
docker commit 容器id 镜像名称:版本号
圧縮画像
docker save -o 压缩文件名称 镜像名称:版本号
画像アーカイブを解凍します
docker load –i 压缩文件名称
2.Dockerfileの概念
1.定義
- dockerfileは、イメージの作成に使用されるテキストファイルです
- テキストには、イメージを作成するために必要な手順と手順が含まれています
- ベースイメージに基づく1つのレイヤーの各命令は、最終的に新しいイメージを構築します
- 開発者向け:開発チームに完全に一貫した開発環境を提供できます
- テスターの場合:開発中にビルドされたイメージを直接取得するか、Dockerfileファイルを介して新しいイメージをビルドして作業を開始できます
- 運用および保守担当者の場合:展開中にアプリケーションのシームレスな移行を実現できます
2.dockerfileキーワード
キーワード | 効果 | 述べる |
---|---|---|
から | 親画像を指定する | dockerfileがビルドするイメージに基づいていることを指定します |
メンテナ | 著者情報 | このdockerfileを作成したユーザーを示すために使用されます |
ラベル | ラベル | dockerfileを示すために使用されるラベルは、Dockerイメージの基本情報で表示できるMaintainerの代わりにLabelを使用できます。 |
走る | 注文の実行 | デフォルトでは、/ bin / sh形式でコマンドを実行します:RUNコマンドまたはRUN [“ command”、“ param1”、“ param2”] |
CMD | コンテナ開始コマンド | コンテナの起動時にENTRYPOINTで使用するデフォルトのコマンドを提供します。フォーマットCMDコマンドparam1param2またはCMD["command"、 "param1"、 "param2"] |
エントリーポイント | 入口 | 通常、実行後に閉じられる一部のコンテナの作成に使用されます |
コピー | コピーファイル | ビルド時にファイルをイメージにコピーします |
追加 | 追加ファイル | ビルド中にイメージにファイルを追加することは、現在のビルドコンテキストに限定されず、リモートサービスから取得できます。 |
ENV | 環境変数 | ビルドを指定するときの環境変数は、コンテナーの開始時にENV name=valueから-eの形式でオーバーライドできます。 |
ARG | ビルドパラメータ | ビルドパラメータはビルド時にのみ使用されます。ENVがある場合、同じ名前のENVの値は常にargのパラメータを上書きします |
音量 | 外部にマウント可能なデータボリュームを定義する | 起動時にファイルシステムにマウントできるビルドイメージのディレクトリを指定します。コンテナを起動するときは、-vバインディング形式VOLUME["ディレクトリ"]を使用します。 |
公開 | 露出したポート | コンテナーの実行時にリッスンするポートを定義します-pを使用してコンテナーを開始し、公開されたポート形式をバインドします:EXPOSE8080またはEXPOSE8080 / udp |
WORKDIR | 作業リスト | 指定されたコンテナ内の作業ディレクトリが作成されない場合、自動的に作成されます。指定された/が絶対アドレスを使用する場合、/で始まらない場合、それは前の作業ディレクトリのパスの相対パスです。 |
ユーザー | 実行ユーザーを指定します | ユーザーがビルドまたは開始時にRUNCMDENTRYPONTを実行するときにユーザーを指定します |
健康診断 | 健康診断 | 多くの場合、アプリケーション自体にヘルスモニタリングメカニズムがあるため、現在のコンテナのヘルスモニタリングを指定するコマンドは基本的に役に立ちません。 |
オンビルド | 引き金 | ONBUILDキーワードの画像をベース画像として使用する場合、FROMの実行が完了した後にONBUILDコマンドが実行されますが、現在の画像の使用には影響せず、あまり役に立ちません。 |
STOPSIGNAL | セマフォをホストに送信します | STOPSIGNALディレクティブは、終了するためにコンテナーに送信されるシステムコール信号を設定します。 |
シェル | スクリプトを実行するシェルを指定します | RUNCMDENTRYPOINTがコマンドを実行するときに使用されるシェルを指定します |
3.Dockerfileはspringbootプロジェクトをデプロイします
1.簡単なspringbootプロジェクトを準備します
2.クラウドサーバーで関連する操作を実行します
dockerfile
FROM java:8
MAINTAINER henrik <10791894@qq.com>
ADD hellodocker-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar
3.ビルドコマンドを実行します
docker build -f ./springboot_dockerfile -t app .
4.実行
docker run -id -p 9000:8080 app