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 ページ コード

推薦する

Zabbixで電子メールアラートを実装する方法

オンラインチュートリアルに従って実装しました。 zabbix3.4、スクリプトとsendEmailを...

MySQLでテーブルを接続するいくつかの方法

MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。テーブ...

MySQL列挙型のテスト例

プロジェクトを開発しているとき、支払い済み、支払済み、クローズ済み、返金済みなどの注文ステータスなど...

事例を通してLinux NFSの仕組みを詳細に分析

前回の記事に引き続き、web02 サーバーを作成し、web01 サーバーと web02 サーバーの ...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

ウェブページの右側に固定されたフローティングレイヤーの実装コード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

VMware Workstation16 と Navicat リモート接続での Centos7 での MySQL8.0 インストール プロセス

目次1. CentOS7+MySQL8.0、yumソースインストール2. MySQLにログインしてパ...

DQL コマンドを使用して MySQL でデータをクエリする方法

この記事では、MySQL でよく使用されるデータ クエリ言語について説明します。 DQL (データク...

互換性を維持しながら他のウェブページのデータを適用する iframe の使い方

以下は、Shiji Tiancheng が Tencent KartRider ページを呼び出すため...

mysql5.7.20 での最初のログイン失敗に対する簡単な解決策

まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...

MySQL でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...

単一テーブルのMySQLバックアップとリストアに関する簡単な説明

A. MySQLバックアップツールxtrabackupのインストール1. Percona 公式 xt...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...

mysql-connector-java.jar パッケージのダウンロード プロセスの詳細な説明

mysql-connector-java.jar パッケージのチュートリアルをダウンロードします: ...

リンク更新ページと js 更新ページの使用例

1. リンクの使用方法:コードをコピーコードは次のとおりです。 <a href="j...