Dockerfile から Docker インスタンスを実行するにはどうすればよいですか?

Dockerfile Kara Docker Insutansuwo Shi Xingsurunihadousurebayoidesuka



Docker は、コンテナ化された環境でアプリケーションを構築、テスト、デプロイ、出荷するために広く使用されているオープン プラットフォームであり、広く好まれています。 Docker は OS レベルの仮想化を使用し、Docker コンテナー、イメージ、ネットワーク、Docker ボリュームなどのさまざまなコンポーネントをサポートします。

Docker コンテナは、Docker イメージを使用してプログラム、構成設定、依存関係をパッケージ化する Docker プラットフォームの重要なコンポーネントの 1 つです。 Docker イメージは、アプリケーションをコンテナ化する方法についてコンテナをガイドする、コンテナの単純なテンプレートまたはスナップショットです。これらのイメージのほとんどは、公式の Docker ハブ レジストリで入手できます。ユーザーは、Dockerfile を使用して、プロジェクトの要件に従ってこれらのイメージを設計することもできます。

このブログでは次のことについて説明します。







Dockerfile とは何ですか?

Dockerfile は、Docker コンテナの基本構造を定義するコマンドと命令を含む通常のテキスト ファイルです。これらの命令はファイルなしでターミナルで実行できますが、各コマンドを 1 つずつ実行するのは多忙で複雑な作業です。 Dockerfile を使用すると、開発者はすべての要件と指示を 1 つのファイルに簡単に指定できます。このファイルは、Docker イメージであるコンテナー テンプレートを構築するために使用されます。その後、docker イメージが実行されて、Docker コンテナー内のインスタンスが起動されます。



Dockerfileの基本コマンド

コンテナーの基本スナップショットを定義するために使用される Dockerfile のいくつかの基本コマンドを表形式で以下に示します。



コマンド 説明
から から 」コマンドは、コンテナ テンプレートのベース イメージを定義するために利用されます。これらのイメージは、公式の Docker レジストリ Docker Hub から取得されます。
メンテナー メンテナー 」コマンドは、Docker イメージを作成している作成者 (名前と電子メール) 情報を定義します。
作業ディレクトリ コンテナ化されたアプリケーションの作業ディレクトリを指定します。
コピー ソース ファイルと構成ファイルをホスト システムから Docker コンテナの指定されたパスにコピーするために使用されます。
追加 追加 ” コマンドは、” と似ています。 コピー 」コマンドを使用しますが、GitHub リポジトリからコンテナ パスなど、URL からコンテナ パスにファイルを追加するリモート URL もサポートしています。
走る 走る 」はコンテナ内でコマンドを実行するために利用されます。 Dockerfile では、コンテナー内の追加の依存関係を管理およびインストールするために主に使用されます。
CMD CMD 」はDockerコンテナのデフォルトポイントを定義します。基本的には、「」の実行可能ファイルとデフォルトのパラメータを定義します。 エントリーポイント ”。
エントリーポイント エントリーポイント 」コマンドは、Docker コンテナの実行可能ファイルを設定するためにも使用されます。基本的に、コンテナで使用されるデフォルトのアプリケーションを毎回設定します。 ENTRYPOINT コマンドも Dockerfile 内で 1 回使用されます。
ユーザー このコマンドは、コンテナでコマンドを実行するためのUID(ユーザー名)を設定するために使用されます。
音量 音量 」コマンドは、外部ボリューム(ファイルシステム)をコンテナにバインドまたはマウントするために使用します。
環境 環境 」コマンドは、コンテナの環境変数を設定するために利用されます。
ARG ARG 」はコンテナ内で引数を渡すために利用されます。
さらす さらす 」コマンドは、コンテナーが実行される公開ポートを指定します。
オンビルド 基本イメージから命令を読み取りますが、これらの命令はダウンストリーム イメージ経由でトリガーされます。
ラベル ラベル 」は、コンテナスナップショットのメタデータを指定するために利用されます。

Docker で Dockerfile から Docker インスタンスを実行するにはどうすればよいですか?

Dockerfile を使用して Docker インスタンスまたはコンテナを実行するには、まず Dockerfile を作成します。次に、Dockerfile を使用してコンテナーの基本的なスナップショットを作成します。その後、スナップショットを実行して Docker インスタンスを起動します。





以下の説明に従ってください。

ステップ 1: Dockerfile を作成する

まず、Dockerfile を作成します。 Dockerfile にはファイル拡張子がないことに注意してください。その後、次のコマンドをファイルに貼り付けます。



ゴーランから: 1.8

作業ディレクトリ / 行く / 送信元 / アプリ

main.go をコピーします。

実行してビルドする -O ウェブサーバー。

さらす 8080 : 8080

エントリーポイント [ 「./ウェブサーバー」

ステップ2: プログラムファイルを作成する

次に、「」という名前の新しいファイルを作成します。 メイン.ゴー 」には、簡単な Golang プログラムが含まれています。この目的のために、次のプログラムをファイルに貼り付けます。

パッケージメイン
輸入 (
「fmt」
'ログ'
「ネット/http」
)

関数ハンドラー ( http.ResponseWriter、r * http.リクエスト ) {
fmt.Fprintf ( 「こんにちは! LinuxHint チュートリアルへようこそ」 )
}
ファンクメイン ( ) {
http.HandleFunc ( 「/」 、ハンドラー )
ログ.致命的 ( http.ListenAndServe ( 「0.0.0.0:8080」 、なし ) )
}

ステップ 3: コンテナのスナップショットを生成する

ここで、「」を使用してコンテナの Docker スナップショットを構築します。 docker build -t <イメージ名> -f ”:

ドッカービルド -t 行く-img -f Dockerfile 。

上記のコマンドでは、「 -t ” オプションは画像の名前またはタグを設定します。” -f 」オプションは、Docker エンジンがビルド コンテキストを読み取る必要がある Dockerfile へのパスを指定します。

イメージが正常に作成されたかどうかを確認するには、「 docker イメージ <イメージ名> ' 指示:

docker イメージ go-img

出力は、Dockerfile からコンテナーのスナップショットが正常に作成されたことを示しています。

ステップ 4: スナップショットを実行してコンテナを起動する

次に、上記の手順で作成したコンテナのスナップショットを実行して、Docker コンテナ内で Docker のインスタンスを起動します。

ドッカーラン -p 8080 : 8080 - 名前 ゴーコント -d 行く-img

上記のコマンドでは、「 -p ” オプションは、” 上でコンテナを実行します。 8080 ' ポート、 ' -名前 ” はコンテナの名前を設定し、” -d 」オプションは、コンテナーをデタッチ モード (バックグラウンド サービス) で実行します。

コンテナが実行されているかどうかを確認するには、「 ドッカーps ' 指示:

港湾労働者 ps

次に、「」に移動します。 http://localhost:8080 」を実行し、アプリケーションが公開ポートで実行されているかどうかを確認します。

上記の出力は、Dockerfile を使用して Docker インスタンスを効果的に開始したことを示しています。

Docker Compose で Dockerfile からインスタンスを実行するにはどうすればよいですか?

Docker compose は、異なるコンテナーで複数のインスタンスを一度に実行できるようにする、Docker プラットフォームのもう 1 つの主要なプラグインです。ユーザーは、Docker compose プラグインを使用して、Dockerfile から Docker インスタンスを実行することもできます。説明のために、指定された手順に従ってください。

ステップ 1: Dockerfile を作成する

まず、Dockerfile を作成します。たとえば、上記のセクションで使用したものと同じ Dockerfile とプログラム ファイルを使用しています。

ゴーランから: 1.8

作業ディレクトリ / 行く / 送信元 / アプリ

main.go をコピーします。

実行してビルドする -O ウェブサーバー。

さらす 8080 : 8080

エントリーポイント [ 「./ウェブサーバー」 ]

ステップ 2: docker-compose.yml ファイルを作成する

次に、「」を作成します。 docker-compose.yml ” ファイルを開き、次のキー ペアをファイルにコピーします。

バージョン: 「3」

サービス:

ウェブ:
建てる: 。
ポート:
- 8080 : 8080

上記の抜粋では次のようになります。

  • サービス 」は、別のコンテナで実行される構成サービスを指定するために利用されます。説明のために、サービスを 1 つだけ設定しました。 ウェブ 」を使用して、コードをクリーンかつシンプルに保ちます。
  • 建てる 」キー ペアは、Dockerfile からビルド コンテキストを読み取るために使用されます。ここで、docker は Dockerfile から指示を読み取り、それに応じてコンテナーを構築します。
  • ポート 」キーは、コンテナーが実行される公開ポートを定義します。

ステップ 3: Docker インスタンスを開始する

ここで、「」を使用してコンテナ内で Docker インスタンスを実行します。 docker-構成アップ ' 指示:

docker-構成アップ -d

確認のために、「」を使用して実行中の構成コンテナーのリストを確認します。 docker-compose ps ' 指示:

ドッカー構成 ps

出力には、「 ウェブ 「」サービスは「」で正常に実行されています。 golangapp-web-1 ' 容器:

Compose サービスの公開ポートに移動し、プログラムが実行されているかどうかを確認します。以下の結果は、Docker compose を使用して Dockerfile から Docker インスタンスを正常に起動したことを示しています。

Dockerfile から Docker インスタンスを実行する方法については以上です。

結論

Dockerfile からコンテナ内の Docker インスタンスを実行するには、まず Dockerfile を作成します。ファイル内にコマンドを追加して、Docker コンテナーのイメージまたはテンプレートを作成します。次に、「」を使用してコンテナーイメージまたはスナップショットを作成します。 docker build -t <イメージ名> -f ' 指示。次に、コンテナー イメージを実行して Docker インスタンスを起動します。ユーザーは、Docker compose を使用して、Dockerfile から Docker インスタンスを実行することもできます。この投稿では、Dockerfile から Docker インスタンスを実行する方法を説明しました。