Docker-Swamとcomposeを使用した導入サービス(containers)


これまでDockerを使用する過程で、Docker runコマンドでcontainerを単独で起動してからOverlayネットワークに参加する方式で導入作業を行ってきた.この方法は直接的に見えますが、サービスに含まれるcontainerの個数が増えるにつれて(dockerコマンド)も多くなり、多くの重複作業をもたらします.の
 
公式サイトではdocker-composeでcontainerの編成、特にcompose files--V 3バージョンを実行できる機能が多く追加されており、サービス中のcontainを個別のdocker hostまたは複数のhosts(swarmノード)に配置するのに便利であることを考慮し、dockerの使用状況を考慮すると、確かに高度な特性を行う試みの段階に達している.さあ、行こう!
 
例を共有します.https://hackernoon.com/deploy-docker-compose-v3-to-swarm-mode-cluster-4159e9cca712#.lyx2e8fd9
以上、compose V 3+swarmを使用して猫犬投票システムを構築する方法について説明しましたが、公式の例では、詳しく説明されています.興味のある子供靴は研究することができます.のここでは、インスタンスで「docker stack deploy」コマンドを使用して複数のhost上に配置し、「docker-compose up」を使用してそれぞれ2つのhost上でサービスを開始し、配置する方法と同様の方法を使用しています. 
 
準備作業
まず、Swarmによりnodesを作成する、Overlayネットワークモードを作成する.私はここでは言うまでもなく、私の前のエッセイを見たり、万能のインターネットを利用して答えを見つけたりすることができます.
ここで使用しているDocker engineとDocker-composeのバージョンは次のとおりです.
 
Docker-compose
よく知られているように、composeはdockerが私たちに編成するための利器ですが、私たちはどのように彼女を使うべきですか?
解析中ですymlの前に、私の業務を説明したいのですが、業務に詳しい後、具体的な「code」を見てみましょう.
ビジネスニーズ:私たちは2つのhost(swarm node)の上でそれぞれ1組のサービスを確立しなければなりません.簡単にするために、nodesをnodeDBとnodeServiceと命名します.名前の通り、nodeDB上にdatabaseのサービス(oracle serverのデプロイ)を確立し、nodeService上にプログラム(containers)をデプロイします.containers間の通信はSwarmのOverlayネットワークによって行われる.
 
NodeDBのdocker-compose.yml
version: '3'

services:

  frs_orasvr:
    build:
      context: ./frsDB
      dockerfile: Dockerfile
    image: frs_orasvr_img:v1
    container_name: frs_orasvr
    hostname: frs_orasvr
    ports:
      - "1521:1521"
    volumes:
      - /DATA/compose_frs/frsDB/cafisFRSDB/:/frs
    networks:
      - qrtSwamComposeNet
    

networks:
  qrtSwamComposeNet:
    driver: overlay

ここでは、いくつかの内容に注意してください.
1.networks:compose file V 3では、Docker 0ネットワークベースのsubnetをnetworksキーワードで定義できます.そして私たちのサービスをこのsubnetに追加します.このようなメリットは、サービス間の隔離を実現し、このサービスを必要としないと、他のサービスに影響を与えないように「docker-compose down」をコマンドすることで、サービスと対応するsubnetをアンインストールすることができます.
 
2.build:buildコマンドでそのDockerfileのロードを指定できます.Dockerfileは、汎用的なdockrイメージを独自のイメージにカスタマイズする方法を提供し、これらのカスタマイズのステップはDockerfileで記録することができます.例えば、私は以前docker倉庫からpullからimageを1つ下ろして、私たちは彼をbaseImageと呼んで、それからこの基礎の上で私のカスタマイズを行ってmyImageを生成して、もし他の機械の上でmyImageを使う必要があるならば、前のやり方はmyImageを私有倉庫に提出して、必要な時pullは下りて、しかし異なる場所が異なるmyImage(v 1,v 2,v 3...)を必要として、イメージが氾濫する可能性があります.Dockerfileで独自のカスタムプロセスを記録すると、便利になります.
 
OK、うるさい...Dockerfileの顔を見てみましょう
 
FROM 172.100.1.15:5000/oracle11g_server_v3
RUN mkdir /frs/
COPY /cafisFRSDB/ /frs/
COPY /cafisFRSDB/listener.ora /app/oracle/11.2.0/network/admin/
CMD ["/bin/bash", "/frs/startup.sh"]

Dockerfileの内容は簡単で、copyファイルです.
CMD--containerを起動するときに実行するshellスクリプトで、oracleサービスとインスタンス(ビジネスロジック要件)を起動します.
 
cdからdocker-composeまでymlファイルがあるディレクトリには、コマンド「docker-compose up」を入力します.コマンドの実行が完了すると、
1.ネットワークcomposefrs_の確立qrtSwarmComposeNet 
 
2.Dockerfileによるimgeの生成
 
3.compose imageを実行しcontainerを生成しshellスクリプトを呼び出す
 
 
これで、nodeDBでの作業は終わりました...
 
NodeServiceのdocker-compose.yml
私たちはこのhost(swarm node)にサービスを配置し、サービス中のcontainerは以前のnode上のoracleサービスと通信する必要があります.の
直接code(簡単に言えばservicesのcontainerが1つしかリストされていません)
version: '3'
services:

  frs_ftsoft:
    build:
      context: ./ftsoft
      dockerfile: Dockerfile
    image: frs_ftsoft_img:v1
    networks:
      - composefrs_qrtSwamComposeNet
    container_name: frs_ftsoft
    hostname: frs_ftsoft
    mac_address: xx:xx:xx:xx:xx:xx
    volumes:
     - /data/CabisSvr/DockerFrs/ftsoft:/frs

networks:
  composefrs_qrtSwamComposeNet:
    external: true

Componentファイルで使われているDockerfileの内容は以前とあまり違わないので、ここではあまり話さない.
 
注意:
1.nodeDBのcompose fileにネットワークを作成したので、external:true(作成する必要はありません)と指定してcontainerに参加すればいいです.
2.「docker-compose up」を直接実行すると、指定したネットワークがほとんど見つからないとエラーが表示されます.のこれは、以前にnodeDB上で作成したnetworkが自動的に新しいnode上に表示されないため(公式には)nodeService上でcontainerを実行してネットワークに追加する必要があるためです.
 
例えば「docker run-itd--name=mybusybox--network=composefrs_qrtSwamComponent busybox/bin/sh」
 
その後、nodeServiceでcomposefrsを表示できます.qrtSwamComponentNetネットワークは、この時点で「docker-compose up」を再実行すればOKです.この点はまだ少し穴があいている.
 
結論
OK、nodeDBとnodeServiceで「docker-compose up」を2回実行することで、コマンドは異なるhostsノードでcontainersを実行し、最終的にはサービスで外部ユーザーに表示することを実現しました.
本文はhttps://www.cnblogs.com/atuotuo/p/6588331.html