Dockerfileを使用してApacheイメージを作成する方法

Dockerfileを使用してApacheイメージを作成する方法

1. Dockerイメージ

1.1 Dockerイメージ

アプリケーションは、公開された標準フォーマットを使用してDockerコンテナの操作をサポートします。

1.2 Dockerイメージの作成方法

  • 既存の画像に基づいて作成する
  • ローカルテンプレートに基づいて作成
  • Dockerfileに基づいて作成

Dockerイメージは階層構造です

ここに画像の説明を挿入

① Dockerfile 内の各命令は新しいイメージレイヤーを作成します ② イメージレイヤーはキャッシュされ、再利用されます ③ Dockerfile 命令が変更されたり、コピーされたファイルが変更されたり、イメージのビルド時に指定された変数が異なると、対応するイメージレイヤーキャッシュは無効になります ④ あるレイヤーのイメージキャッシュが無効になると、それ以降のイメージレイヤーキャッシュも無効になります ⑤ イメージレイヤーは不変です。あるレイヤーにファイルを追加し、次のレイヤーでそのファイルを削除しても、イメージにはそのファイルが残っています

2. 既存のイメージに基づいてインスタンスを作成する

コンテナ内で実行されているプログラムと動作環境をパッケージ化して新しいイメージを生成する

docker コミットオプション コンテナID 作成したいイメージ名: タグ
-m: 説明情報
-a: 著者情報
-p: ビルドプロセス中にコンテナを停止する

[root@server1 ~]# docker ps -a #既存のコンテナ コンテナID イメージ コマンド 作成ステータス ポート 名前
86cf506635da centos:7 "/bin/bash" 6秒前 5秒前 nerve_shockley
[root@server1 ~]# docker commit -m "image" -a "zf" -p 86cf506635da docker:new #docker を作成: 新しいイメージ sha256:e3056b40acd772abc9a39c6c4f3cb42ba119eb9392b32fb275414f00e82d55b2
[root@server1 ~]# docker images #生成されたイメージを表示 リポジトリ タグ イメージ ID 作成 サイズ
docker new e3056b40acd7 9秒前 267MB
centos 7 4f280dc8c807 21時間前 267MB
#コンテナを停止してイメージを作成するのが最善です

3. ローカルテンプレートに基づいて作成する

オペレーティングシステムのテンプレートファイルをインポートして新しいイメージを生成し、wgetコマンドを使用してそれをローカルイメージとしてインポートします。

ここに画像の説明を挿入

[root@server1 ~]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new #テンプレート名イメージ名をインポート daoke:new
[root@server1 ~]# docker images #生成されたイメージを表示 リポジトリ タグ イメージ ID 作成 サイズ
daoke 新着 61b2d8af0457 38秒前 215MB
docker new e3056b40acd7 10分前 267MB
centos 7 4f280dc8c807 22時間前 267MB

4. Dockerfileに基づいて作成する

Dockerfile は一連の命令で構成されるファイルです。

ファイル構造:

  • ベースイメージ情報
  • メンテナー情報
  • ミラー操作手順
  • コンテナの起動時に命令を実行する

Dockerfile は 1 行につき 1 つの命令をサポートします。各命令は複数のパラメータを持つことができ、"#" で始まるコメントをサポートします。

Dockerfile の操作手順:

命令説明する
画像より新しいイメージのベースとなるイメージを指定します。最初の命令は FROM 命令である必要があります。
メンテナー名新しいイメージのメンテナー情報を記述する
RUNコマンドそれに基づいてイメージ上でコマンドを実行し、新しいイメージに送信する
CMD ["実行するプログラム","パラメータ 1","パラメータ 2"]命令がコンテナを起動するときに実行されるコマンドまたはスクリプト。Dockerfile には CMD コマンドを 1 つだけ含めることができます。複数のコマンドを指定した場合、最後のコマンドのみが実行されます。
EXPOSEポート番号ミラーを実行してサービスを提供する際に外部ノードへのマッピングを容易にするためにミラーポート番号を公開する
ENV環境変数の値次のRUNで使用される環境変数の値を設定します。
ADD ソースファイル/ディレクトリ ターゲットファイル/ディレクトリホストからコンテナにファイルをコピーします。圧縮されたパッケージの場合は解凍し、ソースファイルはDockerfileと同じディレクトリにある必要があります。
ソースファイル/ディレクトリ ターゲットファイル/ディレクトリをコピーローカル ホスト上のファイル/ディレクトリをターゲットの場所にコピーします。ソース ファイル/ディレクトリは Dockerfile と同じディレクトリにある必要があります。
ボリューム ["ディレクトリ"]コンテナにマウントポイントを作成する
ユーザーユーザー名/UIDコンテナを実行するユーザーを指定する
WORKDIR パス後続のRUN、CMD、ENTRYPOINTの作業ディレクトリを指定します。cdと同じです。
ONBUILD コマンド生成されたイメージをベースイメージとして使用するときに実行するコマンドを指定します
ヘルスチェック健康チェック

[root@server1 ~]# mkdir apache #ミラーディレクトリを作成 [root@server1 ~]# cd apache/

#Dockerfileを作成する
[root@server1 apache]# vi Dockerfile 
FROM centos:7 #ベースイメージに基づいて、centosカーネルで実行 MAINTAINER this is zzf web #メンテナー情報 RUN yum -y update  
yum -y install httpdを実行します
EXPOSE 80 #外部マッピング用にポート80を開きます ADD index.html /var/www/html/index.html #ホストWebサイトのファイルをイメージに追加します ADD run.sh /run.sh #実行スクリプトをイメージにコピーします RUN chmod 755 /run.sh #権限を昇格します CMD ["/run.sh"] #コンテナの起動時にスクリプトを実行し、Apacheサービスを開始します #現在のディレクトリにindex.htmlとrun.shを作成します
[root@server1 apache]# vi run.sh 
#!/bin/bash
rm -rf /run/httpd/* 
exec /usr/sbin/apachectl -D FOREGROUND #コンテナの起動時にサービスを開始します [root@server1 apache]# vi index.html 
こんにちは

#イメージを作成するには、Dockerfile が現在配置されているディレクトリにいる必要があります。スペースと . は現在のディレクトリ [root@server1 apache] を表すことに注意してください。# docker build -t http:centos 。
#作成されたイメージを表示する [root@server1 apache]# docker images
リポジトリ タグ イメージ ID 作成 サイズ
http centos 5db0e8103d54 5分前 539MB
daoke 新着 61b2d8af0457 33分前 215MB
docker new e3056b40acd7 43 分前 267MB
centos 7 4f280dc8c807 22時間前 267MB

#イメージをコンテナとして実行 -p はマッピング ポートで、コンテナ ポート 80 をホスト ポート 1212 にマッピングします (空いている必要があります)
-P はノードポートを指定せず、ランダムにポートを割り当て、デフォルトの割り当てはポート 32168 から始まります [root@server1 apache]# docker run -d -p 1212:80 http:centos  

#コンテナのステータスを表示 [root@server1 apache]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
a8fa8ae6be42 http:centos "/run.sh" 3 分前 3 分前にアップ 0.0.0.0:1212->80/tcp xenodochial_franklin
86cf506635da centos:7 "/bin/bash" 48 分前 48 分前 nerve_shockley

ファイアウォールを無効にしてApacheサービスをテストする

ここに画像の説明を挿入

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

以下もご興味があるかもしれません:
  • Dockerfileを使用してDockerイメージを構築する手順
  • スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作
  • Dockerイメージの作成Dockerfileとコミット操作
  • Dockerfile に基づいて Tomcat イメージを構築する方法
  • Dockerfile を使用して Docker イメージをカスタマイズする方法
  • カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfileを使用してDockerイメージを構築する

<<:  本をめくる効果を実現するネイティブJS

>>:  初心者がHTMLタグを学ぶ(1)

推薦する

layui をベースにしたログインページの実装

この記事の例では、ログインページを実装するためのlayuiの具体的なコードを参考までに共有しています...

MySQL が InnoDB テーブルが独立したテーブルスペースか共有テーブルスペースかを判断する方法の詳細な説明

序文InnoDB はデータをテーブルスペースに保存します。デフォルト設定では、初期サイズが 10 M...

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...

【Webデザイン】E-WebTemplates の美しい海外の Web ページ テンプレート (FLASH+PSD ソース ファイル+HTML) を共有します

これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...

Prometheus を使用して、MySQL の自動増分主キーの残りの使用可能パーセンテージをカウントします。

最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...

mysql の追加、削除、変更、クエリの基本ステートメント

文法以下は、MySQL テーブルにデータを挿入するための INSERT INTO コマンドの一般的な...

Vue+WebSocket ページでの長時間接続のリアルタイム更新

最近、Vue プロジェクトではデータをリアルタイムで更新する必要があります。折れ線グラフは 1 秒ご...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

React の 3 つの主要属性における Ref の使用に関する詳細な説明

目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...

MySQL がテーブルを読み取れないエラー (MySQL 1018 エラー) の解決方法

1. エラーの再現MySQL データベースにはアクセスできますが、データベース テーブルを読み取るこ...

vue3でDOMをマウントするためのプラグインを書く際の問題について

vue2と比較して、vue3にはアプリの概念が追加され、vue3プロジェクトの作成も // メイン....

VueはOpenLayersを使用してTiandi MapとAmapを読み込み

目次1. 世界地図1. VueにOpenLayersをインストールする2. アマップ1. 世界地図1...

CSS を使用して複数列の等高レイアウトを設定する方法の例

最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...