ホームページ >テクノロジー周辺機器 >IT業界 >DockerとDockerの機能的な深さは構成されています

DockerとDockerの機能的な深さは構成されています

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-08 09:06:11728ブラウズ

The Functional Depth of Docker and Docker Compose

Docker ComposeおよびVultr Containerレジストリを使用したマルチコンテナーフラスコアプリケーションをビルドDocker Composeを使用すると、ユーザーは単一の構成ファイルを使用してマルチコンテナーアプリケーションを実行および定義できます。複数のコンテナのセットアップと管理プロセスを簡素化し、アプリケーションの開発、テスト、展開が容易になります。この記事では、2つのコンテナを備えたフラスコアプリケーションを作成し、Vultr Container Registry(VCR)を使用してアプリケーションのDocker画像を管理し、Dockerのマルチコンテナー機能を使用して複数のコンテナを管理するようにします。

サンプルアプリケーションの作成

次の手順では、サンプルアプリケーションを作成するように導きます。

Vultr Customer Portalを介してDocker Marketアプリケーションを使用して、Vultr Computeインスタンスを展開します。
  1. SSHを使用して、非ルートSUDOユーザーを使用してサーバーに安全にアクセスします。
  2. サーバーを更新します。
  3. 新しいプロジェクトディレクトリを作成して、入力します:
  4. <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  5. という名前の新しいファイルを作成します

    app.py

    <code class="language-bash">nano app.py</code>
    次のコードを追加します:
  6. ファイルを保存して終了します。このフラスココードは、Redisデータベースに接続し、ルートURLにアクセスするたびにカウンターを増加させます。

    <code class="language-python">from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)</code>

    ポート5000への着信接続を許可し、ファイアウォールをリロードします:
  7. <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>
  8. という名前の新しいファイルを作成します

    requirements.txt

    <code class="language-bash">nano requirements.txt</code>
    次のパッケージを追加します:
  9. ファイルを保存して閉じます。

    <code>flask
    redis</code>

    ディレクトリに別のディレクトリを作成して入力してください:
  10. flask-redis-example

    <code class="language-bash"> mkdir static
     cd static</code>
  11. という名前の新しいファイルを作成します
  12. styles.css

    次のコードを追加します:
    <code class="language-bash"> nano styles.css</code>
  13. ファイルを保存して終了します。

    <code class="language-css"> body {
         font-family: Arial, sans-serif;
         text-align: center;
         background-color: #f4f4f4;
         margin: 0;
         padding: 0;
     }
    
     h1 {
         color: #333;
         margin-top: 50px;
     }
    
     p {
         font-size: 18px;
         color: #666;
     }</code>

    ディレクトリに別のディレクトリを作成して入力してください:

  14. flask-redis-example

    <code class="language-bash"> mkdir templates
     cd templates</code>
    という名前の新しいファイルを作成します
  15. index.html次のコードを追加します:

    <code class="language-bash"> nano index.html</code>
  16. ファイルを保存して終了します。
  17. <code class="language-html"> <!DOCTYPE html>
     
     
         <title>Flask App</title>
         <link rel="stylesheet" href="%7B%7B%20url_for('static',%20filename='styles.css')%20%7D%7D">
     
     
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     
     </code>

    vultr container registryを使用

  18. このセクションでは、Vultr Container Registryを作成し、Docker画像をレジストリにアップロードし、Docker ComposeファイルをセットアップしてFlaskおよびRedisデータベースのサービスをセットアップします。

バルトコンテナレジストリを展開します。

  1. ディレクトリでDockerマニフェストを作成します:

  2. 次の構成を追加します:flask-redis-example

    <code class="language-bash">nano Dockerfile.flask</code>
    ファイルを保存して終了します。
  3. build docker image:
    <code class="language-dockerfile">FROM python:3.9-slim
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY app.py .
    COPY static/ ./static/
    COPY templates/ ./templates/
    
    EXPOSE 5000
    
    CMD ["python", "app.py"]</code>

  4. バルトコンテナレジストリへのログイン:

    <code class="language-bash">docker build -t flask-app .</code>
    バルトコンテナレジストリの概要セクションに記載されている
  5. を置き換えてください。

  6. タグDocker画像:

    <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  7. 鏡をバルトコンテナレジストリに吐き出す:

    <code class="language-bash">nano app.py</code>

    docker画像を押した後、Vultr DashboardのVultr Containerレジストリの「リポジトリ」セクションに画像が存在することを確認します。

  8. docker-compose.yaml

    という名前の新しいファイルを作成します
    <code class="language-python">from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)</code>

    ファイルを保存して終了します。上記のYAML構成では、2つのサービスwebredisを定義します。 webサービスは、現在のディレクトリ(。)からフラスコのアプリケーションを構築し、コンテナのポート5000をホストのポート5000にマッピングします。また、webサービスがredisサービスに依存することも指定しています。 redisこのサービスは、Docker Hubの公式Redis Dockerイメージを使用しています。

  9. build dockerはファイルを構成します:

    <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>

    ビルドプロセスが完了したら、http://:5000のフラスコアプリケーションにアクセスしてください。ウェブサイトを複数回更新してみて、ページ訪問のカウントが増加するかどうかを観察してください。

バルトコンテナレジストリのその他の使用

  • dockerを使用したVultr Containerレジストリ
  • kubernetesを備えたバルトコンテナレジストリ
  • vllmコンテナ画像をビルド
  • llama.cppコンテナ画像をビルドします
  • Pytorch Container Imageをビルドします

ベストプラクティス

    kep
  • ファイルはよく整理されており、十分に文書化されています。 docker-compose.yaml
  • ホストディレクトリにバインディングする代わりに、名前付きボリュームを使用してデータを永続化します。
  • 環境変数を使用して、パスワードやAPIキーなどの機密データを保存します。
  • コンテナを管理するには、
  • docker-compose updocker-compose downなどのDocker Composeの組み込みコマンドを使用します。 docker-compose ps

結論 この記事では、2つのコンテナを備えたフラスコアプリケーションを作成し、Vultr Containerレジストリを使用してアプリケーションのDocker画像を管理し、Dockerのマルチコンテナー機能を利用して複数のコンテナを管理しました。

この記事はVultrが後援しています。 Vultrは、世界最大のプライベートクラウドコンピューティングプラットフォームです。開発者の中でお気に入りのVultrは、185か国で150万人以上の顧客に柔軟でスケーラブルなグローバルクラウドコンピューティング、クラウドGPU、ベアメタル、クラウドストレージソリューションを提供しています。 Vultrの詳細

以上がDockerとDockerの機能的な深さは構成されていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。