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)

推薦する

フックを使用して React コンポーネントを書くときに注意すべき 5 つの点

目次01. レンダリングが不要な場合はuseStateを使用する02. リンクの代わりにrouter...

HTMLは読み取り専用のテキストボックスを実装しており、コンテンツを変更することはできません。

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...

ミニプログラム開発ツールのソースコードからの基本実装の分析

目次ミニプログラム開発者ツールのソースコードを表示する方法ミニプログラムアーキテクチャ設計1. ミニ...

MySQL テーブルタイプ ストレージエンジンの選択

目次1. 現在のデータベース支出のストレージエンジンを表示する方法1:方法2: 2. ENGINE=...

MySQL データベースの 1045 エラーの解決方法

ローカル データベースがサーバー データベースに接続されているときに発生する 1045 の問題を解決...

VUEをベースにしたシンプルな学生情報管理システムの実装

目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...

Vue+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...

CSSを使用して円形の波効果を実現する

モバイル デバイスでは、金額を表示するために円形の波グラフィックがよく使用されます。最初は、この効果...

JavaScriptは両端キューを実装する

この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有して...

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

pdf.js を使用して Vue で PDF ファイルをプレビューする方法

ページ上で PDF をプレビューすると、一部のファイルは印刷またはダウンロードできません。現時点では...

Nginx リバース プロキシと負荷分散の実践

リバースプロキシリバースプロキシとは、プロキシサーバーを介してユーザーのアクセス要求を受信し、ユーザ...

Dockerはローカルディレクトリとデータボリュームコンテナ操作をマウントします

1. DockerはローカルディレクトリをマウントしますDocker は、ホスト上のディレクトリをイ...

MySQL ストアド プロシージャにおけるループ ステートメント (WHILE、REPEAT、LOOP) の使用法の分析

この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...