.netcore項目のドッカー、及びドッカーとの間の通信

要するに:

  同社は最近、新しいシステムを完成し、システムが原因あなたがドッキングウィンドウのサービスを提供したいのリーダーシップに、マイクロサービスアーキテクチャを使用しています。また、私は兄に指導の多くを喜ばせる、間違った場所かのように、以下の所見が出てきた共有します。

内容:   

  1. ドッキングウィンドウとは何ですか?
  2. メリットは何ですかドッキングウィンドウを使用しますか?
  3. 使用とドッキングウィンドウドッキングウィンドウ間の通信

1.ドッキングウィンドウとは何ですか?  

  ドッキングウィンドウは、開発者がポータブル鏡に自分のアプリケーションとの依存関係をパッケージ化して、一般的なLinuxまたはWindowsマシンのいずれかに公開することができますオープンソースのアプリケーション・コンテナ・エンジンを仮想化することが可能です。容器が完全にサンドボックスである(サンドボックス:仮想システム・プログラム)機構、互いに任意のインターフェイスを持っていないであろう。言い換えれば、我々は、インストールパッケージにパッケージ化環境およびソフトウェアに依存するために必要な当社のシステムとのシステムは、その後のLinuxまたはWindowsにインストールすることができドッキングウィンドウを使用することができます。

  ドッキングウィンドウ3つのコアコンセプトについて:

  1. 倉庫:倉庫格納された画像
  2. ミラー:システムイメージに似て
  3. コンテナ:例ミラーリング

  私は特に、通常は多くの形状と連絡をインストールし、袋、で、再生するために川にビーチで子供が好き。濡れた砂の後、そこに、ブロックの形状を金型プレスを取る、それは五芒星の好きな子供の頃の金型であることを覚えています。私はどうしたら時折いたずら少し友人が散乱形状を欺く、私は空気、ちょうどすぐに拾う、その後、金型を作る、怒らないでください泣かないだろう、と彼は言いませんでした。時には気まぐれで、新しい形を考え、それを出して、私はそれを取るよ、その後、金型外の新しい形状のホールドを取得するために家に飛びました。

  ここで、私はアナロジーのビーチをドッキングウィンドウが、私のバッグは倉庫のようなもので、金型がミラーである、コンテナは当然のブロックで作られた金型の形状を取ることです。私たちは、システムのインストールパッケージを理解する。しかし、実際のアプリケーション開発は、あなたが鏡を置くことができ、コンテナは、システムがインストールされた後に実行するものと理解しました。それが合理的であると思いますが、また彼が好き首長が交換する場合、これらは、ドッキングウィンドウの私自身の個人的な理解です。

2.ドッキングウィンドウメリットは何ですか?

  従来のシステムは、コンピュータの開発者の開発システム上でこのような問題を開発し、あなたがソフトウェアの多くをインストールし、環境に必要なサーバー上、または誰か他の人のコンピュータ上で走ってきました。異なるオペレーティングシステムだけでなく、設置方法が異なる場合があります。などのインストールが完了した後、スタートはエラーの多くを見つけ、その後、正しくお使いのコンピュータ上で実行します(ここで私が会いました)。そこには、会社のファイルサーバは、より、リラックスした複数のシステムの干渉実行しているのを恐れことが可能である(仮想マシンを使用することができますが、パフォーマンスは非常に良いではありません)。

  使用ドッキングウィンドウは、鏡の中にパッケージ良いシステムとどのようなシステムが依存し、開発することができ、その後、あなたはプラットフォームのサポートのドッキングウィンドウに公開することができます。そして、ドッキングウィンドウは、各コンテナは独自のリソースを持っており、他のコンテナが孤立していることを確認することができます。あなたは(ドッカ給付あまり、私はそれらを表示されません)など、異なるスタックを使用するアプリケーションを実行するために別のコンテナを使用することができます。

使用とドッキングウィンドウの3.docker間の通信

  ダウンロードすると、私は話すことはありませんドッキングウィンドウを、インストール方法、それが白にプログラムされていません。

  ステップ1:DOTNETコアミラーをダウンロード:ドッカーRUNは、Microsoft / DOTNETに-it、これは、startコマンドで、画像がない場合は自動的にダウンロードされます。

  ステップ2:プログラムのクラスファイルを変更し、ユーザーの電子メール・コントローラおよびコントローラを作成するために、すなわち、UserServiceのを作成し、Web APIをコアプロジェクトをemailservice

        

 

      

 

    ここでは、電子メールサービスは、ユーザーのサービスに依存します。後に書かれており、その項目の下で別途公表

  ステップ3:Dockerfileを書きます

    それぞれDockerfileを構築するために同じレベルにフォルダを公開

    まずemialservic dockerfile書きます

      

1 FROM microsoft/dotnet     #本镜像继承自哪个镜像
2 COPY publish /publish      # 拷贝当前文件夹下的publish文件夹到镜像中的根目录下的publish文件夹
3 WORKDIR /publish        #设置镜像的工作目录
4 EXPOSE 4001/tcp         # 暴露 tcp连接的4001端口
5 CMD ["dotnet","EmailService.dll","--databaseurl=132456789"]    #设置命令,以及一些参数

 

    在编写userservice的dockerfile

      

FROM microsoft/dotnet  
COPY publish /publish   
WORKDIR /publish
EXPOSE 5000/tcp   
CMD ["dotnet","UserService.dll"]

 

    有关dockerfile里面的指令解释,请阅读:https://www.cnblogs.com/linjiqin/p/8735230.html

  第四步:分别在目录下运行cmd,然后输入:docker build -t dotnet/emailservice .  和 docker build -t dotnet/userservice .  (注意后面的 . 号),然后镜像就制作完成了。

  第五步:因为emailservice依赖于userservice,所以emailservice和userservice要进行通信。

      docker通信有三种方式:

          1.通过docker容器ip加端口号。因为docker容器重启之后ip地址会改变,不方便迁移。所以不推荐使用。(除非使用固定ip)

          2.通过映射到主机的端口号。这种方式可以,但是会占用主机端口号

          3.docker的link机制。docker的link机制可以通过一个name来和另一个容器通信,link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器。

      我采用link机制,首先编写一个docker-compose.yml文件

      

version: '3'  #采用哪个docker-compose的版本
services:    #服务集合
  user-service:    #服务名,name
    image: dotnet/userservice    #启动哪个镜像
    ports:        #端口映射设置,这里是主机的6001端口映射到docker里的5000端口
    - "6001:5000"
  email-service:    #服务名,name:
    image: dotnet/emailservice  #启动哪个镜像
    ports:          #端口映射设置,这里是主机的4001端口映射到docker的4001端口
    - "4001:4001"
    links:        #依赖哪个服务
    - "user-service"

  然后emailservice可以通过:http://user-service:5000端口来访问userservice服务 。我在前面的代码中已经设置好了,就不用了

   运行命令:docker-compose up,就行了

结果图如下

  

 

 

     

おすすめ

転載: www.cnblogs.com/norain/p/docker_comunication.html