darallium's tech blog
home
blog
tech

qiita: @darallium
github: darallium
twitter: /darallium/
instagram: yu_kyu_n
email
Home tech docker-compose-training
  • Docker composeトレーニング

    1. 目次
    2. 事前学習
    3. 第1回, 第2回
    4. docker composeファイルを作る
    5. 問題サーバーを一つ立ててみる
    6. 第3回
    7. 1つ目のタスク
    8. 2つ目のタスク
    9. 3つ目のタスク
    10. 4つ目のタスク
    11. 第3.5回
    12. 第4回
    13. 1つ目のタスク
    14. 2つ目のタスク
    15. 3つ目のタスク
    16. おまけのタスク

    事前学習

    前佛さんが書いているhttps://docs.docker.jp/index.html の「始め方 - Get started」の項目をpart1からpart9まで進めておいてください。

    第1回, 第2回

    docker composeファイルを作る

    • どこでもいいのでroot filderを1つ定めてください 例示として /sample/を定めます。このフォルダが作業フォルダとなります。フォルダ名は今後省略して表記します。
    • 例: /sample/root/, /sample/root/src/->/src, /sample/root/model/->/model/
    • 使っていいポートの範囲は10000-11000の区間内です。ただし、10080ポートはブラウザでアクセスできないので注意して下さい。
    • network名は自由ですが、例として苗字-networkになるようにして進めます。
    • nginx 関連を/sample/root/nginxに置きます.イメージを展開してください

    問題サーバーを一つ立ててみる

    問題のファイルはこれ です.ダウンロードして展開してください. 問題ファイルは非公開です。適当なCTFのDockerインスタンスを用意してください。 私は作問者としてロールプレイしますので、ポート番号10081から疎通するように問題をデプロイしてください。不足情報は適宜質問してください。

    第3回

    1つ目のタスク

    prometheus を生やします. Docker imageはこちら を使用してください。

    前回までのcompose.ymlに生やしてください。

    2つ目のタスク

    prometheusを動作して疎通できる状態にします.続けて、特に題材が思いつかなかったのでとりあえずDocker自身を監視することにします。

    • prometheusがデフォルトで使うポート番号は9090番です.前回までと同じポート番号のルールで疎通を確認しましょう。
    • prometheusの設定ファイルは/etc/prometheus/prometheus.ymlに記述します。 設定ファイルの書き方はdocker公式 と [Prometheus公式]を参考にしてください。(https://prometheus.io/docs/prometheus/latest/configuration/configuration/) を参考にしてください。

    3つ目のタスク

    prometheusで収集されたデータを永続化します。 /prometheusをネームドボリュームで永続化してください。 参考資料: https://docs.docker.jp/compose/compose-file/index.html

    4つ目のタスク

    nginxのmetricsを収集します。 初めに、nginxのコンテナでngx_http_stub_status_moduleが有効であることを確認してください。 確認出来たら、nginx.confを編集して/stub_statusで見えるようにしてください。 続けて、nginx-exporterのインスタンスを生やします. docker imageはこちら を使用してください。 nginx-exporterのインスタンスが生えてきたらdocker metricsと同様にnginx-exporter経由でmetricsを収集してください。

    第3.5回

    Arch LinuxをインストールしてLinuxに慣れましょう。 参考資料を見て各自進めてください。インストール先は部室のProxmoxのインスタンスを1つ作成してかまいません。 参考資料: Arch linux wiki

    第4回

    1つ目のタスク

    grafanaを生やします。 docker imageはこちらを使用してください。 前回までのcompose.ymlに生やしてください。

    2つ目のタスク

    /etc/grafana/provisioning/datasourcesをネームドボリュームで永続化してください。

    3つ目のタスク

    grafanaを動作して疎通できる状態にします。また、prometheusで収集されたデータを、grafanaに転送して可視化します。

    GF_SECURITY_ADMIN_USER、GF_SECURITY_ADMIN_PASSWORDの環境変数をセットするとデフォルトパスワードをセットできます。デフォルトではadmin/adminです。 設定方法は参考資料を見ながら頑張ってください。ダッシュボードはあえてベストプラクティスは特に教えないので思い思いに作ってください。

    参考資料: prometheus公式

    grafana公式

    redhat grafanawebui

    redhat grafana setting

    おまけのタスク

    prometheusからアラートを発報できるようにします。 alertmanagerを導入します。 docker imageこちらを使用してください。 discordのwebhook機能と連携して、アラートを発報してみてください。 参考資料: https://knowledge.sakura.ad.jp/11635/

    ===============広告=================

    darallium

    Thu Oct 03 2024 12:55:50 GMT+0900 (Japan Standard Time)