まとめ
Windows 上に C:\Dev\app
フォルダがあるとします。
docker run --rm -v "C:\Dev\app:/app" -w /app mcr.microsoft.com/dotnet/sdk dotnet new console ls ./app docker run --rm -v "C:\Dev\app:/app" -w /app mcr.microsoft.com/dotnet/sdk dotnet run
■ 以前の記事で Docker をインストールしたので動かしてみます
今回は .NET SDK のイメージを使って、dotnet コマンドを実行してみます。ホスト環境に .NET がインストールされていなくてもビルド等が行える、そういうやつを試します。
■ Docker Desktop の様子
先日インストールした Docker Desktop を起動してみます。起動にだいぶかかる......。じっと待ちます。
起動後。インストールして何もしていないのに何もありません。ここから始めてみます。
■ コマンドで操作
Docker Desktop から離れてコマンドで操作していきます。
まずは、docker
コマンドがちゃんとあるか確認します。ちゃんとありますね。
公式の .NET SDK のイメージをインストールします。
docker pull mcr.microsoft.com/dotnet/sdk
参考: dotnet-docker/samples/build-in-sdk-container.md at main · dotnet/dotnet-docker · GitHub
pull に少し時間がかかります。進捗を見守ります。
終わりました。Docker Desktop を見ても追加されています。やったね!
■ コマンドを実行
今 pull したイメージの .NET SDK でプロジェクトを作って、実行してみます。
dotnet new console
コマンドを実行します。
docker run --rm -v "C:\Dev\app:/app" -w /app mcr.microsoft.com/dotnet/sdk dotnet new console
続いてこれは、ホスト側でのコマンドです。作られたプロジェクトを見ています。もしかしたらこれやらない方が記事として分かりやすかったかもしれません。
ls ./app
そしてまた イメージの .NET SDK で実行。(.NET では run での実行時に必要であれば自動でビルドされます)
docker run --rm -v "C:\Dev\app:/app" -w /app mcr.microsoft.com/dotnet/sdk dotnet run
完璧ですね。
参考: dotnet-docker/samples/build-in-sdk-container.md at main · dotnet/dotnet-docker · GitHub
解説
--rm
: 実行後にすぐに破棄する。今回はコマンドを実行してすぐに停止して再利用しない想定です。このオプションで実現しました。
-v
: ホストのディレクトリをゲストにくっつけます。今回はホストの C:\Dev/app
ディレクトリをゲストで /app
でみられるようにしています。「:」 の前がホストのディレクトリ、後ろがゲストです。「:」 が二つ出てくるので微妙ですが。
-w
: ゲスト内での作業ディレクトリです。-v
で指定した /app
を指定しています。
次は、イメージの指定です。先ほど pull した .NET SDK のイメージを指定しています。
最後の dotnet new console
がイメージ上で実行するコマンドです。
実行結果の標準出力への出力も、ターミナルに表示されるのでわかりやすいですね。
docker: invalid reference format.
今回試している途中で
docker: invalid reference format.
というエラーで docker コマンドが実行できないことがありました。コマンドが間違っていたからなのですが、ちょっとどう間違えたか分かりにくいやつだったのでメモをしておきます。
■ -v "C:\Dev\app:/app"
エラーの場所は -v "C:\Dev\app:/app"
でした。参考にした情報では -v C:\Dev\app:/app
とダブルクォーテーションがなかったのですが、ホスト OS が Windows なので、パスにスペースが入ることを想定して勝手にダブルクォーテーションを追加してみました。
最初
-v "C:\Dev\app":/app
とホスト側の部分にだけダブルクォーテーションをつけていたら、docker: invalid reference format.
いただきました。
今は
-v "C:\Dev\app:/app"
としたら動いています。