1. Dockerイメージ1.1 Dockerイメージ アプリケーションは、公開された標準フォーマットを使用してDockerコンテナの操作をサポートします。 1.2 Dockerイメージの作成方法
Dockerイメージは階層構造です ① Dockerfile 内の各命令は新しいイメージレイヤーを作成します ② イメージレイヤーはキャッシュされ、再利用されます ③ Dockerfile 命令が変更されたり、コピーされたファイルが変更されたり、イメージのビルド時に指定された変数が異なると、対応するイメージレイヤーキャッシュは無効になります ④ あるレイヤーのイメージキャッシュが無効になると、それ以降のイメージレイヤーキャッシュも無効になります ⑤ イメージレイヤーは不変です。あるレイヤーにファイルを追加し、次のレイヤーでそのファイルを削除しても、イメージにはそのファイルが残っています 2. 既存のイメージに基づいてインスタンスを作成するコンテナ内で実行されているプログラムと動作環境をパッケージ化して新しいイメージを生成する docker コミットオプション コンテナID 作成したいイメージ名: タグ 例 [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 をよろしくお願いいたします。
centos-DVD1バージョンシステムの固定IPアドレスは192.168.159.128で、cen...
このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...
Vue2 の記述スタイルから Vue3 の形式に切り替えると、記述スタイルとコード構造にいくつかの変...
MySQLは次のエラーを表示します「コントロール パネル -> 管理ツール -> サービ...
この記事では、マウスの動きを追跡するためのJavaScriptの具体的なコードを参考までに紹介します...
私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...
:not疑似クラスセレクターは、式に一致しない要素をフィルタリングできます。例 テーブル tbod...
目次補間式方法計算された要約する今日は、Vue の計算プロパティについてお話ししましょう。計算プロパ...
MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...
HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...
まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...
1. jdkダウンロードアドレスをダウンロードする我下載的是jdk-8u221-linux-x64....
sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...
目次プロキシモードとは何ですか?実例を紹介例を使ってプロキシモデルの定義を理解するプロキシとはget...
まず、画像を見てみましょう。今日はこのエフェクトを作成します。 実は、何でもないんです。Web ペー...