Docker-Composeワンタッチ導入


Docker-Composeワンタッチ導入


文書ディレクトリ

  • Docker-Composeワンタッチ配置
  • Dockerネットワークモード
  • ワンタッチ配置
  • Dockerネットワークモード


    dockerネットワークモードについては、時間があれば別のブログで詳しく紹介したり、そのブログの下で補足したりします.
    dockerコンテナが存在するネットワークは特殊で、マルチコンテナのワンクリック配置ではネットワークの問題に特に注意する必要があります.
    dockerには4つの独自のネットワークがあり、カスタムネットワークもサポートされています.
  • hostモード.コンテナは独自の仮想ネットワークカードを構築するのではなく、ホストのipとポートを直接使用しますが、複数のインスタンスをバインドできないとipが競合します.
  • noneモード.コンテナのネットワーク機能をオフにします.
  • bridgeモード.VMwareのブリッジモードに似ていますが、デフォルトモードです.このモードは、各コンテナに対して動的に割り当てる、独自の仮想ipを設定し、一般的には172である.xxx.xxx.xxx、ゲートウェイのデフォルトは172です.xxx.xxx.1.コンテナを仮想ブリッジに接続し、ブリッジと構成されたNATマッピングテーブルを介してホストと通信します.これに相当して、ホスト上にまた1つのイントラネットが構築された.
  • containerモード.コンテナも独自の仮想ネットワークカードを構築するのではなく、指定したコンテナとネットワークカードを共有します.

  • ワンタッチ配置


    docker-compose.ymlは、ワンタッチの導入を実現します.
    本プロジェクトの例を挙げると
    version: "3"
    services:
      server:
        image: gitgiter/baobaozhuan_server:latest
        depends_on:
          - db
          - redis
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          resources:
            limits:
              cpus: "0.1"
              memory: 50M
        ports:
          - "8080:8080"
        networks:
          - webnet
      db:
        # image: mysql:5.7.25
        image: gitgiter/baobaozhuan_db:latest
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          resources:
            limits:
              cpus: "0.1"
              memory: 300M
        ports:
          - "3306:3306"
        environment:
          MYSQL_ROOT_PASSWORD: SYSU_baobaozhuan2019
          PMA_HOST: mysql
        networks:
          - webnet
      nginx:
        image: nginx:1.12.2
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
          resources:
            limits:
              cpus: "0.1"
              memory: 50M
        volumes:
          - /etc/nginx:/etc/nginx
        ports:
          - "80:80"
          - "443:443"
        networks:
          - webnet
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - "9999:8080"
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints: [node.role == manager]
        networks:
          - webnet
      redis:
        image: redis:5.0.2
        ports:
          - "6379:6379"
        volumes:
          - "/home/docker/data:/data"
        deploy:
          placement:
            constraints: [node.role == manager]
        command: redis-server --appendonly yes
        networks:
          - webnet
    networks:
      webnet:
    
    version docker-composeを指定します.ymlの構文バージョン.2と3はほとんど同じですが、2はコンテナカスタム静的ipをサポートし、3は動的ipをサポートするように変更されたようですが、serviceの名前で相手の動的ipを手に入れることができます.また2はdeployキーワードをサポートしていません.servicesは、導入するサービスを指定します.次のレベルのキー値は、ここのserver、dbなどのサービス名です.サーバがdbにアクセスする場合は、http://db:3306アクセスすると、このdbはdbコンテナの動的ipに取って代わります.このようにする理由は、一般的にserverは1つの具体的なipを介してdbにアクセスするが、dockerネットワークモードにより1つのコンテナでlocalhostまたは127.0.0.1を使用するのは自分のいるコンテナにしかアクセスできず、別のコンテナにアクセスできないため、特定のコンデンサipを使用する必要がある、前述の172である.xxx.xxx.xxxですが、このipは動的に割り当てられており、プロファイル内のipは書き込みが死んでいることを示しています.つまり、このプロファイルに基づいて構築されたserverも、プロファイル内の書き込みが死んだipに基づいてアクセスすることしか知られていません.docker-compose upでサービスを開始するたびに、生成されるのは新しいコンテナであり、これらの新しいコンテナのipは変わります.このようにプロファイルにipをdbの先頭のurlと書くことで,実際のリクエスト時にserverは自分で対応する動的ipを手に入れてアクセスする.imageは、サービスベースのミラーを指定する.portsポートマッピング規則を指定します.volumesマウントするファイルを指定します.ホストホストのファイルをコンテナにマウントできます.一般的にはプロファイルです.deployは、導入時のいくつかの特性を指定します.
  • replicas指定レプリカ数
  • resourceは、cpu、メモリなどの
  • を含むリソース制限を指定する.
  • restart-policyは、サービスが異常に停止した後に再起動することが一般的であるサービス再起動の条件を規定することができる.
  • environmentコンテナの環境変数を指定します.networkネットワークを構成します.デフォルトはbridgeモードで、ネットワークをカスタマイズすることもできます.depends-onは、サービス依存を指定します.一部のサービスでは、サーバが正常に起動するには、dbとredisが先に起動しなければ、正常に起動できないなど、他のサービスが必要になる場合があります.
    さらに、imageは、buildに置き換えられ、両者は同時に存在することができず、imageは、ローカルまたはリモートで構築された既存のミラーによって構築される.buildは、Dockerfileの位置を指定することによってdocker buildを模倣して新しいミラーを生成することができる.
    これで、万事そろって、ただ1つの借りがあります:
    #   docker-compose.yml  
    docker-compose up