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)

推薦する

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...

VMware 仮想マシンの 3 つの接続方法の例の分析

NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...

MySQLのスリープ関数の特殊現象例の詳しい説明

序文MySQL のスリープ システム機能は、実用的な適用シナリオが少なく、通常は実験的なテストに使用...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

Linux コマンドにおける Ctrl+z、Ctrl+c、Ctrl+d の違いと使い方

Linux で Ctrl+c、Ctrl+d、Ctrl+z はどういう意味ですか? Ctrl+c と ...

MySQL 制約の超詳細な説明

目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...

CSS ウェイト値(カスケード)の例の詳細な説明

•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...

完全なMySQL学習ノート

目次MyISAM と InnoDBパフォーマンスの低下と SQL の速度低下の理由: MySQL 実...

Nginx プロキシ使用時にヘッダーに「_」が含まれることで情報が失われる問題の解決方法

序文ゲートウェイプロジェクトを開発する場合、署名 sign_key 情報はリクエスト時にリクエスト ...

nginxでイメージサーバーを構築する手順の詳しい説明(ルートとエイリアスの違い)

インストール手順は省略します( yum -y install nginx;を使用して直接インストール...

Idea は、Web プロジェクトを開始するように Tomcat を設定します。グラフィック チュートリアル

tomcatの設定1. 実行構成をクリック 2. tomcat localを選択 3. tomcat...

Vueデータ変更検出の基本的な実装の簡単な分析

目次1. オブジェクトの変更検出2. オブジェクトに関する質問配列変更検出3.1 背景3.2 実装I...

CentOS 6.2 に MySQL 5.7.28 をインストールするチュートリアル (mysql ノート)

1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...

コード例を通してページ置換アルゴリズムの原理を理解する

ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...

Linuxのseqコマンドを使用して数字のシーケンスを生成します(推奨)

Linux の seq コマンドは、数字のリストを非常に高速に生成でき、使いやすく柔軟性に優れてい...