Dockerfileを使用してDockerイメージを構築する手順

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の内容はレイヤーの構築方法を記述します。

Dockerfile は、行末に「\」を追加する Shell のようなコマンドライン終了方法と、行頭に「#」を追加するコメント形式をサポートしています。

Dockerfile を使用して Docker イメージを構築する場合は、次の点に注意してください。

(1)ニーズを満たしつつもサイズが小さい基本システムイメージを選択するようにしてください。

(2)コンパイルされたファイルやインストールパッケージのキャッシュなどの一時ファイルをクリーンアップする。

(3)各ソフトウェアをインストールする際には、正確なバージョン番号を指定し、不必要な依存関係を導入しないようにする。

(4).dockerignoreファイルを追加するか、クリーンな作業ディレクトリを使用します。

Dockerfile の一般的な手順:

(1).FROM: ビルドするベースイメージを指定するために使用され、通常はDockerfileの最初の命令になります。

(2)ラベル:イメージの整理、ライセンス情報の記録、自動ビルドの支援などに役立つラベルを追加するために使用されます。ラベルは文字列として保存されるキーと値のペアです。

(3)RUN:イメージ内のコマンドを実行するために使用され、新しいイメージレイヤーを作成します。各RUN命令は新しいイメージレイヤーを作成し、常にapt-get updateとapt-get installを1つのRUNに組み合わせます。

RUN 命令には 2 つの形式があります。

A. シェル形式: RUN <コマンド> (コマンド ラインに直接入力したコマンドと同じです)。

B.exec 形式: RUN ["実行ファイル", "パラメータ 1", "パラメータ 2"];

(4) COPY: ローカルファイルをコンテナに簡単にコピーすることをサポートします。COPY命令は通常、イメージにアプリケーションコードを割り当てるために使用されます。

(5)EXPOSE:アプリケーションが使用するネットワークポートを記録するために使用されます。

(6)ENTRYPOINT:コンテナモードでイメージを起動した後にデフォルトで実行されるプログラムを指定するために使用されます。

(7).ENV: コンテナにインストールされているプログラムのPATH環境変数を更新します。

次の Dockerfile は、コンテナ https://github.com/fengbingchun/Messy_Test 内で直接コンパイルおよび実行するために使用されます。

ubuntu:16.04より
ラベル メンテナー="FengBingchun [email protected]" \ 
   バージョン="1.0" \
   説明="dockerfile テスト"
dep_items='git cmake g++-5' を実行します。
  && apt-get アップデート \
  && apt-get install -y $dep_items \ 
  && ln -s /usr/bin/g++-5 /usr/bin/g++ \
  && rm -rf /var/lib/apt/lists/*

イメージをビルドします。次のコマンドを実行すると、fengbingchun/ubuntu:16.04 という名前のイメージが正常に生成されます。

Ubuntu 16.04 で docker build を実行します。

ホスト ディレクトリをマウントして、新しいコンテナ テストを作成し、次のコマンドを実行します。

docker run -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash

次に、コンテナ内で /home/fengbingchun ディレクトリに移動し、Messy_Test をクローンして、次のコマンドを実行します。

git クローン https://github.com/fengbingchun/Messy_Test

次に、cd Messy_Test/prj/linux_cmake_CppBaseTestディレクトリに移動し、次のコマンドを順番に実行します。

./build.sh
./build/CppBaseTest

実行結果は下図の通りで、Dockerfile でビルドしたイメージは Messy_Test を正常にコンパイルして実行できることがわかります。

イメージ fengbingchun/ubuntu:16.04 を tarball に保存し、次のコマンドを実行します。

docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04

ubuntu_16.04.tar を Ubuntu システムにコピーし、tarball からイメージをロードして、次のコマンドを実行します。

docker load -i ubuntu_16.04.tar

次に、Windows で同様の操作を実行し、新しく作成されたコンテナー test で Messy_Test をコンパイルして実行し、次のコマンドを順番に実行します。

docker run -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
cd /home/fengbingchun/
git クローン https://github.com/fengbingchun/Messy_Test
cd Messy_Test/prj/linux_cmake_CppBaseTest/
./build.sh
./build/CppBaseTest

実行結果は下図の通りです。Windows 上で生成したイメージをパッケージ化後、Ubuntu 上でロードすると正常に使用できることがわかります。

これで、Dockerfile を使用して Docker イメージを構築する手順に関するこの記事は終了です。Dockerfile を使用して Docker イメージを構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerfile ファイルの書き込みとイメージ構築コマンドの分析
  • Dockerfile を使用したカスタムイメージの構築の実装
  • Dockerfileを使用してDockerイメージを構築する
  • Dockerfile に基づいて Tomcat イメージを構築する方法
  • Dockerfile を使用して Docker でイメージを構築する方法
  • Dockerfile を使用して nginx イメージを構築する例
  • Dockerfileを使用してイメージを構築する方法
  • dockerfile命令を使用してdockerイメージを構築するためのサンプルコード

<<:  JavaScript を使用してセカンダリ メニューを作成する

>>:  NetEase ブログで使用されているシンプルな Web ページ コード

推薦する

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

Reactフックとzarmコンポーネントライブラリ構成に基づいてh5フォームページを開発するためのサンプルコード

最近、React Hooks を zarm コンポーネント ライブラリと組み合わせて使用​​し、js...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

MySQL RouterはMySQLの読み取りと書き込みの分離を実装します

目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...

Linuxカーネルマクロcontainer_ofの詳細な分析

1. 前述の通り数年前、Linux ドライバーのコードを読んでいたときにこのマクロを見ました。長い間...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

メニューのホバー効果を実現するCSS3

結果: html <nav id="nav-1"> <a cl...

JavaScript+html はフロントエンドページでランダム QR コード検証を実装します

クールなフロントエンドページのランダムQRコード検証を参考までに共有します。具体的な内容は次のとおり...

Node.jsを理解するのはとても簡単です

目次Node.js の公式紹介Node.jsのコア開発言語ウェブ上の JavaScript と No...

docker runの--rmオプションの使用方法

Docker コンテナが終了しても、デバッグを容易にし、ユーザー データを保持するために、デフォルト...

MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

序文:前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザ...

Vueのフロントエンドとバックエンドのポートの不一致の問題を解決する

Vue のフロントエンドとバックエンドのポートが一致していませんconfig index.jsファイ...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

カルーセル効果を実現するための純粋なjs

この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...

CSS3 で画像ドロワー効果を実装するためのサンプル コード

いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...