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)

推薦する

Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する

Prometheus (プロメテウスとも呼ばれる) 公式サイト: https://prometheu...

RHEL8 /CentOS8 でマルチノード Elastic Stack クラスターを構築する方法

一般的に ELK スタックとして知られる Elastic スタックは、Elasticsearch、L...

MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

序文MySQL テーブルの主キーと外部キーを作成するときは、次の点に注意する必要があります。主キーと...

Zabbix で複数の JVM プロセスを監視する方法

1. シナリオの説明:私たちの環境ではマイクロサービスを使用しています。各プログラムには個別のプロセ...

HTMLタグの説明

HTMLタグの説明1. HTMLタグタグ: !DOCTYPE説明: HTML ドキュメントが準拠する...

display または visibility を通じて HTML 要素を表示または非表示にする

場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...

Html+CSS フローティング広告ストリップの実装

1.html部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> ...

体験したい17 404ページ

404 を避けるべきだとどうして言えるのでしょうか? その理由は、ほとんどの 404 ページが粗雑す...

スワイパープラグインを使用して Vue でカルーセルを実装する例

目次vue - スワイパープラグインを使用してカルーセルを実装するカルーセルのバグを解決するには、w...

HTML ハイパーリンク内の中国語文字化けの分析と解決

Vm 内のハイパーリンク URL は、Get 要求のパラメータとして中国語と連結する必要があります。...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

例を通してMySQLの更新がテーブルをロックするかどうかを判定する

2つのケース: 1. 索引あり 2. 索引なし前提条件:方法: コマンドラインを使用してシミュレート...

docker イメージのプル速度が遅い問題の解決策

現在、Docker には中国向けの公式ミラーがあります。詳細については、https://www.do...

js オブザーバーモードの紹介と使用

目次定義2. 使用シナリオ3. 例を挙げる4. コーディング定義オブザーバー パターンは 1 対多の...

Vue ディレクティブ v-html と v-text

目次1. v-text テキストレンダリング命令2. v-html 1. v-text テキストレン...