web-dev-qa-db-ja.com

Dockerツールボックスを.net core 2.0プロジェクトで動作させる方法

.NET Core 2.0プロジェクトでDocker機能を使用しようとするとエラーが発生します。エラーメッセージが表示されています

Visual Studio Container Toolsでは、コンテナ化されたプロジェクトをビルド、デバッグ、または実行する前にDockerが実行されている必要があります。詳細については、以下を参照してください。 http://aka.ms/DockerToolsTroubleshooting

リンクをたどると、Windows 10 Home x64があることに気づき、Docker For Windowsの代わりにDocker Toolboxをインストールする必要がありました。今、この実行可能ファイルをインストールしました

Dockerクイックスタートターミナル

これは、Dockerサービスを起動する方法ですか?この実行可能ファイルを実行しようとしましたが、動作しているようです。コンテナーは実行されていますが、Visual Studio Container Toolsのエラーが引き続き発生します。

私は何が欠けていますか? Visual Studio 2017内でDocker Container Supportを使用するには、Homeよりも高いバージョンのウィンドウが必要ですか?

更新:

Quetzcoatlの提案に従おうとしましたが、Visual Studioでこれらのツールについて同じエラーが引き続き発生しています。以下は、Dockerクイックスタートターミナルで実行したものです。 Visual Studioがプロジェクトを正常に開いた後、プロジェクトをビルドしようとしましたが、コンテナツールに関する前述のエラーが引き続き発生していました。

私のdevenv.exeファイルはにあります

C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe

私のソリューションファイルはにあります

D:\ Development\Visual Studio\Musify2\Musify2\Musify2.sln

enter image description here

更新2:

Dockerクイックスタートターミナルで試すために提案されたコマンドのいくつかを実行しましたが、それらのコマンドの結果はquetz enter image description here

28
ddeamaral

Docker Toolboxでは少し注意が必要ですが、実際にはcore-2.0はここでは何の関係もありません。 docker、docker-toolbox、およびVSがすべてです。

まず第一に:

これは、Dockerサービスを起動する方法ですか?この実行可能ファイルを実行しようとしましたが、動作しているようです。

はい、そうです。 Dockerマシン/サービスが実行されている場合-それは良いことです!

ここで、Dockerでは、通常、Dockerの実行方法/場所に関する情報は環境変数に保持されていることに注意する必要があります。 quickstartスクリプトは、Docker-machineを起動していくつかの基本的なことを確認するだけでなく、後でdockerdocker-composeなどは、Docker仮想マシンを探す場所を知っています。あなたの場合、その情報は主にVMのIPとDockerがリッスンするポート番号で構成されています。

..そして、あなたのVisual Studioにはそれに関する知識がありません。私がそれに賭けているのは、VisualStudioをStartMenuまたはデスクトップアイコンから、またはソリューションファイルをダブルクリックして実行したため、環境変数を取得する機会がなかったからですquickstartコンソールから。

解決策は非常に簡単です。VSがその情報を取得することを確認してください。つまり、環境変数を取得することを確認してくださいand環境変数freshを取得することを確認してください。IP/ポートは時々変動する可能性があるためです。 OS設定にコピーするだけではありません。自動的に更新されるものはありません。

私が見つけた最も簡単な方法は、Visual Studioを閉じて、Dockerツールボックスクイックスタートコンソールを実行し、次にそのコンソール内からVisualStudioを実行する、たとえばVS2017 Community Editionの場合です:

Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
(.......snip..........)


                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

Start interactive Shell
quetzalcoatl@LAP049 MINGW32 ~
$ /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/Community/Common7/IDE/devenv.exe C:\\PATH\\TO\\MY\\SOLUTION.sln

TAB補完を使用しても、パスは非常に長いので、通常は小さな.sh私のためにそれを実行するスクリプト。

ところで! DEVENVへのパスは、UNIXに似ている必要があることに注意してください(/c/Program\ Files...)、mingwシェルはそれを理解する必要があるため、SOLUTIONへのパスは通常のWindowsパス(c:\projects\foo\bar\..)VisualStudioは起動後にそれを読み取ろうとするためです。

18
quetzalcoatl

これは、2017年にdocker-toolboxを使用してWindows 10で作業する場合に得たものです。あなたはこれに従い、私はそれが動作することを保証します。これは、WindowsアプリケーションのネイティブドッカーをサポートしていないWindows 10ホームにのみ適用されます。

  1. W10 homeにdocker-toolboxをインストールします

  2. Docker QuickStartターミナルを1回実行して、Docker-machineを作成します。少し時間がかかります。 IPアドレスなどを割り当てるまでしばらくお待ちください

  3. 完了すると、コマンドプロンプトが表示されます。 「docker-machine ip default」と入力します。後で必要になるので、IPアドレスを書き留めます

  4. QuickStartターミナルウィンドウを閉じます。それは、小さなUbuntu Linuxサーバーのboot2docker.isoイメージをvirtualboxアプリ(別名docker-machine別名default vm)に初期化するだけでした。仮想化テクノロジーやOracle virtualboxに慣れていない場合は、まず読み上げを読み直してから読み直してください。しかし、もしそうなら喜んで続けます

  5. 既に説明したように、Docker-machineインスタンスはLinux vmであるため、.netコアテクノロジーを使用してビルドされたプロジェクトのみを開くことができることは明らかです。残念ながら、完全な.netフレームワークの場合、Windows 10 Proでのみ使用可能なWindowsコンテナーを実行するか、virtualboxで独自のWindows nanoサーバーまたは2016サーバーvmを構築してから、Docker WebサイトのWindowsのネイティブdockerの手順を使用する必要があります。ここから、この回答の残りの部分は、Linux vm/docker-machineのみでコアプロジェクトを実行したい人に役立ちます。

  6. 管理者モードでWindows Power Shellを開き、「docker-machine ls」と入力して、デフォルトのvmが実行されていることを確認します。 「docker-machine status default」も実行でき、「running」を返す必要があります

  7. ここで、デフォルトのvmを実行しているvirtualboxアプリケーションを開き、設定をクリックします。 「共有ドライブ」タブを開きます。ここで、ホストマシンの「c:\ Users」フォルダーが、vmの「c/Users」フォルダーとしてマップ/マウントされていることを確認する必要があります。この手順は非常に重要であり、この手順を怠ると、正常に機能するために多くの問題が発生します。

  8. また、ソリューション/プロジェクト/コードベース[〜#〜] must [〜#〜]が正しく機能するためには、「c:\ Users \」の下に保存してください。これは、OOTBを使用する場合です。許可されたパスの外にあるフォルダーをマウントしようとして時間を無駄にしたくありませんでした。しかし、もしあなたが冒険好きなら、ぜひともそれを見つけ出し、どうやってやったか教えてください

  9. 現在、ケツァルコアトルが正しく言及しているので、このドッカーマシンについて知る必要があります。起こる唯一の方法は、環境変数が設定されている場合です。したがって、このコマンド「docker-machine env default | PowershellウィンドウのInvoke-Expression '。これは、Docker-Machineでうまく動作するための魔法のソースです

  10. プロジェクトソリューションをdblクリックするか、新しいプロジェクト/ソリューションを作成して、通常どおりに開きます。 Powershellで 'start'コマンドを使用して、既存のvsソリューションまたは新しいvsインスタンスを開きます。ヒント:新しいソリューションを作成する場合は、プロジェクトテンプレートタイプを選択するときにLinux Dockerのオプションを選択しないでください。ソリューションがすべてセットアップされ、準備が整ったら、Dockerサポートを完全に追加できます。実際のところ、未チェックのままにして、ソリューションを作成します。これにより、ソリューションをビルドして、IIS ExpressまたはSelf-hostedモードで実行して、core2.0が適切に動作するかどうかを確認することができます。

  11. すべてが機能していることを確認したら、OOTBホームページにアクセスします。プロジェクトにrtをクリックし、[追加]にカーソルを合わせて[Dockerサポートの追加]をクリックして、Dockerサポートを追加します。新しいdockerプロジェクト(.dcproj)およびdocker関連ファイルの束を追加

  12. ここでは、ここではdockerの核心部分には触れませんが、プロジェクトはもはやスタートアップではなく、新しく作成されたdockerプロジェクトがそうであることに気付くでしょう。それは完全に正常で意図した動作です。これは、設定が完了し、Dockerコンテナを使用してアプリを起動する準備ができていることを意味します。そこで、「Docker」ボタンをクリックして、あなたの苦労がついに報われることを確認してください。画像の作成とコンテナのスピンアップには時間がかかりますが、完了するとvsが起動してデバッガをアタッチします。

  13. ここでは、ブラウザが新しいウィンドウまたはタブを開くときにページに到達できないというエラーが発生するため、再び失望し、価値がないと感じます。その理由は、ブラウザーのアドレスがWebサーバーではないlocalhostを指しているためです。 「ウェブサーバー」がドッカーコンテナになりました。したがって、localhostを上記で取得したIPアドレスに置き換える必要があります。ポート番号はそのまま残ります。ページを送信すると、ホームページ/ルート作業が表示されるので安心します。これにより、vs。でのデバッグが可能になります。何らかの理由でそうでない場合は、c:\ Users \フォルダーの.vsdbgというフォルダーを削除して、アプリケーションを再実行する必要があります。

13
BRBdot