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

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

Lisa Kudrow
リリース: 2025-02-08 09:06:11
オリジナル
667 人が閲覧しました

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. mkdir flask-redis-example
    cd flask-redis-example
    ログイン後にコピー
    ログイン後にコピー
  5. という名前の新しいファイルを作成します

    app.py

    nano app.py
    ログイン後にコピー
    ログイン後にコピー
    次のコードを追加します:
  6. ファイルを保存して終了します。このフラスココードは、Redisデータベースに接続し、ルートURLにアクセスするたびにカウンターを増加させます。

    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)
    ログイン後にコピー
    ログイン後にコピー

    ポート5000への着信接続を許可し、ファイアウォールをリロードします:
  7. sudo ufw allow 5000
    sudo ufw reload
    ログイン後にコピー
    ログイン後にコピー
  8. という名前の新しいファイルを作成します

    requirements.txt

    nano requirements.txt
    ログイン後にコピー
    次のパッケージを追加します:
  9. ファイルを保存して閉じます。

    <code>flask
    redis</code>
    ログイン後にコピー

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

     mkdir static
     cd static
    ログイン後にコピー
  11. という名前の新しいファイルを作成します
  12. styles.css

    次のコードを追加します:
     nano styles.css
    ログイン後にコピー
  13. ファイルを保存して終了します。

     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;
     }
    ログイン後にコピー

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

  14. flask-redis-example

     mkdir templates
     cd templates
    ログイン後にコピー
    という名前の新しいファイルを作成します
  15. index.html次のコードを追加します:

     nano index.html
    ログイン後にコピー
  16. ファイルを保存して終了します。
  17.  <!DOCTYPE html>
     <html>
     <head>
         <title>Flask App</title>
         <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
     </head>
     <body>
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     </body>
     </html>
    ログイン後にコピー

    vultr container registryを使用

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

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

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

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

    nano Dockerfile.flask
    ログイン後にコピー
    ファイルを保存して終了します。
  3. build docker image:
    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"]
    ログイン後にコピー

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

    docker build -t flask-app .
    ログイン後にコピー
    バルトコンテナレジストリの概要セクションに記載されている
  5. を置き換えてください。

  6. タグDocker画像:

    mkdir flask-redis-example
    cd flask-redis-example
    ログイン後にコピー
    ログイン後にコピー
  7. 鏡をバルトコンテナレジストリに吐き出す:

    nano app.py
    ログイン後にコピー
    ログイン後にコピー

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

  8. docker-compose.yaml

    という名前の新しいファイルを作成します
    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)
    ログイン後にコピー
    ログイン後にコピー

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

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

    sudo ufw allow 5000
    sudo ufw reload
    ログイン後にコピー
    ログイン後にコピー

    ビルドプロセスが完了したら、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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート