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 fengbingchun@163.com" \ 
   バージョン="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 ページ コード

推薦する

Ubuntu 12.04 でカーネルツリーを構築する実装プロセスの詳細な説明

まず使用しているカーネルのバージョンを確認してくださいlin@lin-仮想マシン:~$ uname ...

MySQL 5.7.18 無料インストール版ウィンドウ設定方法

初めてのブログです。データベースの勉強を始めた頃のことを書いています。自分でダウンロードしたのですが...

MySQLの場合の使用例分析

まず、データベース テーブルを作成します。 テーブル `t_demo` を作成します ( `id` ...

MySQL/MariaDB で完全な Unicode をサポートする方法

目次utf8mb4 の紹介UTF8 バイト数超過エラーutf8mb4 サポートデフォルトの文字エンコ...

Tomcatがセッションを管理する方法の例

ConcurrentHashMapを学習しましたが、どのように適用すればよいかわかりませんか? To...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

CSSでプロセスナビゲーション効果を実現する(3つの方法)

CSS によりプロセスナビゲーション効果を実現します。具体的な内容は以下のとおりです。 ::tip...

SQLクエリの実行順序をゼロから学ぶ

SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT &...

Linux で PyCurl のエラーを解決する方法

「curl-config を実行できませんでした」の解決策 pycurl のダウンロード/解凍 (p...

ウェブページのフォント設定についての簡単な説明

サイト全体のフォントを設定することは、常にシンプルでありながら難しい作業です。深く掘り下げていくと、...

Oracle と MySQL の高可用性ソリューションの比較分析

Oracle と MySQL の高可用性ソリューションについては、以前からまとめたいと思っていたので...

CSS3は、大きな円のドット分布と回転効果を実現するためにtransform-originを使用します。

まず、transform-origin 属性を使用する必要があります。transform 属性は必ず...

MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。

1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...

Centos7環境でMySQL 5.6のインスタンスを複数作成する方法の詳細な説明

この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...