Windows11 + Docker + VSCode で開発環境を構築【ずんだもん解説/Rust】
Summary
TLDRこの動画のスクリプトは、WindowsでDockerとVS Codeを使ってRustの開発環境を構築する方法を解説しています。Ubuntu上での開発の課題を指摘した上で、DockerコンテナとVS Codeの機能を活用することで、パッケージの競合や拡張機能の管理が容易になることを述べています。さらに、WindowsへのDockerのインストール方法と、コンテナの構築・デバッグ方法をステップバイステップで解説している貴重な内容です。
Takeaways
- 😊 WSL2とDockerを使うことで、Windowsでも快適な開発環境を構築できる
- 👍 ドッカーを使うことで、開発環境の再現性と移植性が向上する
- ☑️ ドッカーイメージを使えば、簡単に必要な開発環境を構築できる
- 💡 ドッカーファイルを使って独自のイメージも構築可能
- 📝 VSCodeのデブコンテナ拡張機能を使うと、簡単にコンテナを開発に利用できる
- 🗂 バインドマウントを使うことで、ホストとコンテナの間でソースコードをリアルタイムに共有できる
- ❗ 複数の言語やバージョンを同じOS上にインストールするとパッケージ競合が起きることがある
- 😮 Dockerコンポーズを使うと、複数のコンテナを1つのアプリケーションとして管理できる
- 🔄 ボリュームやバインドマウントで、コンテナ間でデータを共有できる
- i️ ドッカーデスクトップとWSL2+UbuntuのどちらでもDockerは動作する
Q & A
ドッカーをWindowsにインストールする方法は何種類ありますか?
-2つの方法がある。1つはDocker Desktop for Windowsをインストールする方法。もう1つはWSL上のUbuntuにDockerをインストールする方法。
なぜDockerをインストールする方法が2つあるのですか?
-元々DockerはLinux環境で動作することが前提になっているため。Windows環境だとWSL2を使ってDockerを動かすことができる。
Dockerイメージとは何ですか?
-コンテナを作成、実行するための設計図のようなもの。1つのイメージから複数のコンテナを作ることができる。
Docker Composeとは何ですか?
-複数のコンテナを定義、管理することができるツール。Webアプリとデータベースなど、複数のコンテナを1つのアプリケーションとして扱える。
バインドマウントとは何ですか?
-ホストマシンのディレクトリとコンテナ内のディレクトリを接続することで、リアルタイムにデータを共有できる機能。
devcontainer.jsonに何を定義していますか?
-使用するDockerイメージやバインドマウントの設定、VSCodeの拡張機能等、コンテナの開発環境に関するメタデータを定義している。
デバッグ時に発生したエラーの原因は何でしたか?
-launch.jsonファイルがないことが原因だった。YESを選択してファイルを自動生成することで解決した。
クリスピーとは何ですか?
-Rustの静的解析ツールの1つ。コードの解析を行い、警告やエラーを報告してくれる。
cargoを使えなかった場合、どうするべきですか?
-PATHなどの環境変数が正しく設定されているかを確認する。設定し直せば使えるようになるはず。
Rust開発に役立つVSCodeの拡張機能を教えてください。
-rust-analyzer、CodeLLDB、cratesなどがオススメ。生産性を大きく向上させてくれる。
Outlines
🔧 Windows上でのRust開発環境の構築
この動画では、WindowsでDockerとVSコードを使用してRustの開発環境を構築する方法について説明します。特に、WSL上のUbuntu環境で発生するパッケージの競合や依存関係の問題、そしてVS Codeの拡張機能の管理に関する不便さを解決するために、Docker環境の設定を推奨しています。さらに、Dockerの基本概念やメリット、Dockerファイルの重要性、Docker Composeの役割、そしてデータの保持方法についても説明しています。
🌐 Dockerの基本とインストール方法
動画のこの部分では、Dockerを用いてイメージをコンテナ化し、Windows上での開発環境を如何に簡単に設定できるかを説明しています。また、Dockerのインストール方法には二つのアプローチがあること、そのうちの一つはDocker Desktop for Windows、もう一つはWSL上のUbuntuにDockerをインストールする方法であることを詳述しています。このセクションでは、特にUbuntu上でのDockerのインストールプロセスと、インストール後の初期設定について詳しく解説しています。
🛠️ Rust開発環境の設定と利用
このセクションでは、VS CodeのDev Containers拡張機能を使用してRustの開発環境をDockerコンテナ内に構築する手順を紹介しています。具体的には、コンテナの設定、必要な拡張機能の追加、そして開発環境のビルドと実行のプロセスについて説明しています。さらに、バインドマウントを用いたファイルの同期、デバッグの設定方法、そしてRustプロジェクトの作成と実行の手順についても触れています。最後に、もし視聴者がより詳細なDockerの設定に興味がある場合、追加の動画を制作する可能性について言及しています。
Mindmap
Keywords
💡Docker
💡コンテナ
💡イメージ
💡Dockerファイル
💡デベロッパーエクスペリエンス
💡再現性
💡ロッカーハブ
💡レイヤー
💡バインドマウント
💡VSCode
Highlights
ドッカーはアプリケーションと依存関係をコンテナにパッケージ化する技術
コンテナはイメージの実行インスタンス、イメージは設計図のようなもの
ドッカーハブからイメージを共有管理、自由に利用できる
Dockerファイルでカスタムイメージを構築できる
コマンドをまとめると容量を削減できる
コンテナを定義管理できるのがDocker Compose
ボリュームとバインドマウントでデータ共有ができる
WindowsにはデスクトップとWSL上への2通りのインストール方法がある
公式はデスクトップを推奨するがWSL上でも問題なく動く
ドットデブコンテナ内のJSONファイルで環境を用意できる
バインドマウントでホストとコンテナの同期ができる
コンテナ内でラスト開発ができることを確認
デバッグも問題なく動作した
静的解析も正常に機能している
簡単な方法を説明したが、さらに凝ることも可能
Transcripts
こんにちはずんだもんなのだこの動画は
Windowsでドッカーとvsコードを
使ってラストの開発環境を構築するという
内容なのだ以前このチャンネルでWSL上
のubuntをvsコードで使うという
動画を出したけれどこのWSLと
ubunt環境で開発をしている人は次の
ような不満があるかもしれないのだ一つ目
はパッケージ同士が鑑賞や競合したり
依存関係がぐちゃぐちゃになったりする
ことラストPythonJavaC+など
複数の言語やバージョンの開発環境を一つ
のOSこの場合Ubuntu上に作ると
たまにパッケージが競合したりするのだ
例えば最近僕が遭遇したのは
ホームブリューとsdk1をインストール
した状態でsdk版でJavaを
インストールしようと思ったらホーム
ブリューに内蔵してるアンチップが動いて
しまって変なエラーが出たのだこんなこと
は言語やバージョン元に開発環境をで分け
てしまえば解決するのだ2つ目は
vscodeの拡張機能をオンオフするの
が面倒くさいことこれは
vscodeの問題なんだけど
プロジェクトを作ったら最初に必要な拡張
機能を一つ一つオンオフしなければなら
ないこれが地味にめんどくさいのだこれは
vscodeのデブコンテナという拡張
機能で解決できるということでもっと快適
に開発するためにロッカー環境を
vscodeで構築するよというのがこの
動画の趣旨なのだその一例としてラストの
環境構築をするのだ
知らない人向けに特価について説明するの
だ一言で言うとドッカーは
アプリケーションとその依存関係を
コンテナという軽量な環境にパッケージ化
する技術なのだプログラミング言語や
フレームワークデータベースなどの開発
テスト実行環境とかそれぞれを
パッケージングして開発環境の再現性
移植性を向上させようというものなのだ
このパッケージングしたものをドッカー
コンテナというコンテナは特化イメージを
実行する実態インスタンスなのだ
言い換えると特会イメージはコンテナを
作成実行するための設計図のようなものだ
から一つのイメージから複数のコンテナを
作ることが可能になっているのだ
イメージ自体は状態を保存せず変更もでき
なくなっているこのイメージを共有する
ことで同じ環境が誰でも迅速かつ簡単に
構築できるようになるのだドッカーハブと
いう
イメージを共有
管理を行うサービスがあってそこから自由
にイメージを利用できるようになっている
自分でイメージを作らなくても誰かが作っ
たものを使えば楽ができるのだこの
ロッカーハブなどで配布されている
イメージを自分用にカスタムしたい場合は
Dockerファイルを使うのだドッカー
ファイルは
イメージをビルドするための手順書で
テキスト形式で何を実行するとか
インストールするとかを書くドッカーは
そのロッカーファイルの命令を読み込んで
自動的にイメージを構築できるのだ
ドッカーファイルから出来上がった
イメージの実態はレイヤというものが順番
に重なって出来上がっているレイヤとは
イメージに対する変更箇所でロッカー
ファイル内の1命令につき1つのレイヤー
がある
イメージの更新や再構築をする場合は以前
のDockerファイルから変更された
命令のみを変更してそれ以外のすでに
ローカルでキャッシュしてあるレイヤーは
変更しないこういう構造になっているから
イメージコンテナが同じレイヤーを共有し
ている場合実際のディスク使用量は
イメージとコンテナの合計容量より少なく
なっているはずなのだドッカーファイルで
の命令が多くなると
円安が増えるつまり実用量が増えてしまう
だから
容量削減のために
命令はできるだけまとめようねと言われて
いるのだ次にロッカーコンポーズについて
ロッカーコンポーズは
複数のコンテナを定義
管理することができるもの例えばWeb
アプリケーションとデータベースフロント
エンドとバックエンドなど
環境の違う複数のコンテナを一つの
アプリケーションとして扱うことができる
のだ
めっちゃ便利な機能なんだけどこの動画で
は扱わないのだあと
便利な機能として
複数のコンテナにまたがってデータを共有
保持するものがあるこれはボリュームと
バインドマウントの2つの方法があるのだ
ボリュームはトッカーが管理する特別な
ディレクトリになっいてコンテナを削除し
ても残るのでデータの保持に特化している
例えば
複数のコンテナがそれぞれ異なるアプリを
実行していてそれらのコンテナが生成する
ログを一元管理したい時なんかに使うのだ
バインドマウントは
ディレクトリを指定しドッカーを実行して
いるホストマシンのディレクトリと接続し
てデータ共有ができる機能ホスト上と
コンテナ内で同じソースコードをリアル
タイムに反映させたい時とかに使うこの
動画でもバインドマウントの機能は使うの
だまとめるとDockerは
イメージという設計図をコンテナという形
に実体化させて使うものコンテナ自体は
OSとアプリケーションの実行環境の
まとめパッケージ
イメージはドッカーハブ状のものを取得し
たりDockerファイルで構築して使う
以上多分これだけ覚えてくれれば大丈夫な
のだ
実はWindowsにおいてDocker
をインストールする方法は2種類あるのだ
一つはドッカーデスクトップfor
Windowsという全部リセットを
Windowsにインストールする方法
もう一つはWSL上のubuntsに
ドッカーをインストールする方法なぜ2つ
あるかといえば
元々ロッカーは
Linux環境でした動かないことが根幹
にあるのだ
WSL上とはいえ
Ubuntuでならロッカーは普通に動く
Windows
環境だとWSL2を使って動くようになっ
てるのだドッカーデスクトップfor
Windowsを使うのがロッカー公式が
推奨してる方法なので通常はこっちでいい
インストールも簡単で公式サイトから
ダウンロードしてインストールするだけな
のだでも僕は後者WSLのubuntsに
ドッカーを入れてるのだどっかgitなど
のソフトウェアやソースコードなど開発
関係のものそれら全てをUbuntuに
まとめておいてWindows環境を汚し
たくないという理由でそうしてる
WSL上のubuntsにロッカーを
インストールする方法についてはロッカー
公式ドキュメントのUbuntuの
インストールを参照してその通りにやれば
問題ないのだ
Ubuntuでのインストールはドッカー
エンジンの
ディストリビューション別のインストール
Ubuntuでのインストールという
ページに書いてあるのだ
便利スクリプトを使ったインストールの
ところのこの2行を実行するだけで
ロッカーのインストールができる実際に
やってみるのだ
Ubuntuのターミナルを開いて1行
ずつ実行する
2行目を実行したときロッカー公式は
ロッカーデスクトップfor
Windowsの利用を推奨してるよと
いうメッセージが出るけど無視して待っ
てれば勝手にインストールが始まるのだ
こんなメッセージが出たらインストール
完了
次は
Linuxインストール後の作業のページ
に書いてある作業をするのだ
ユーザーをDrグループに追加しますの
ところに書いてある一行を実行これで
普段を分子にログインしているユーザーで
ロッカーコマンドが使えるようになったの
だ
あとドッカーのサービスを分子の起動後に
常駐させるためにシステムDを有効にする
必要があるのだ設定の仕方はこの
MicrosoftのWSLの
ドキュメントに書いてあるSudo
limetseWSLcomという
コマンドで
管理者権限のビムで該当ファイルを開く
ドキュメントのコピーをクリックして
書き込む内容をコピーエディタのところで
右クリックするかコントロールタスVで
テストできる記入ができたらコロンwq
ビックリマークと入力すれば保存して
エディタを抜けられるのだ
この後に1回WSLを再起動する必要が
あるパワーシェルのターミナルを開いて
WSLシャットダウンとコマンドを実行
すれば再起動ができるのだ
再起動し終わったら再びUbuntuの
ターミナルを開いて
トッカーランハローワールドコマンドで
ドッカーが実行できるか確認する
こんなメッセージが表示されればロッカー
のインストールが正しくできているのだ
これでようやく準備は終わり最後にラスト
の開発環境を構築するのだそのためには
まず
vscodeにこのデブコンテナという
拡張機能を入れるついでにこのロッカーの
拡張機能も入れておくといいのだこのデブ
コンテナの使い方だけれどまず何でもいい
から開発プロジェクトを開いて欲しいのだ
ここではプロジェクトサンプル
ディレクトリを作成したのだこのサンプル
ディレクトリ内にさらにドットデブ
コンテナディレクトリを作成この中にデブ
コンテナ.JSONファイルを作成する
デブコンテナ拡張機能はプロジェクト
ディレクトリのルートにあるドットデブ
コンテナデブコンテナドットジェイソンを
監視しているからこれらは名前を変えちゃ
ダメこのジェイソンファイルにいろいろと
メタデータを書き込むことで簡単に
ロッカーコンテナを含む開発環境が用意
できるのだ書き方はデベロップメント
コンテナというサイトに書いてある
A5サイトしかないけどGoogle翻訳
にかけて頑張って読んで欲しいのだ僕が
書いたラスト開発環境用のジェイソン
ファイルはこんな感じ
軽く説明していくのだネームはコンテナの
識別名
イメージは使用するイメージ長い名前の
イメージなんだけどこれは
Microsoftが用意しているもので
ドッカーハブにある公式のラストイメージ
を
vscodeのデブコンテナ用に設定を
付け足したいイメージなのだ
Microsoftが用意しているデブ
コンテナーをドッカーイメージの変更点を
一覧にするとこんな感じgitは最新版に
なっててGシェルが追加インストール済み
vscodeからの操作用のユーザーを
追加
ターゲット配下は監視しないような設定を
追加この設定はラストではおなじみ
頻繁に変更されるビルド結果を見ないため
拡張機能はラストの開発で使う定番のもの
が5つバインドマウントも設定されてて
ドットデブコンテナがあるディレクトリ
つまりホスト側のプロジェクトルート配下
がコンテナ内のワークスペース配下と同期
してるセッティングスはコンテナ内で有効
になるvsコードの設定
エクステンションズのところはさっき話し
た標準で入ってる5つの他に欲しい拡張
機能を設定すると良いのだこのジェイソン
ファイルを用意できたらあとはビルドして
コンテナを開くだけなのだ
まずプロジェクトルート僕の場合サンプル
フォルダーでvscodeを開くのだそう
したら右下にオープンインコンテナ
問い合わせボタンのある通知が出てくると
思うこのボタンを押せば初回はビルドして
からコンテナを開いてくれるのだビルドは
長いので倍速で飛ばす
スタートラインコンテナのメッセージが出
たら完了なのだバッシュを開いてラストの
管理ツールカーゴが使えるか確認
きっとも確認大丈夫そうなのだ試しに
川越ユニットでラストのプロジェクトを
作るのだ
ubunts側のプロジェクトルートを見
てバインドマウントの確認これもちゃんと
できてるのだ
ラストを実行できるかも確認メインの上に
出るランをクリックこれもクリア次に
デバッグをクリックしてみる左にある実行
とデバッグボタンをクリックすると
デバッグするにはローンチJSON
ファイルが必要だけどないよトイエラーが
出るOKを押すと次にローンチジェイソン
ファイルを生成していいと聞かれるので
イエスをクリックこれでデバッグができる
ようになったので
適当にブレイクポイントをつけてデバッグ
するデバッグも動いたのでクリア性的
解析のクリックが動くかも確認メッセージ
にちゃんとクリスピーと書いてあるので
大丈夫そう
以上でちゃんとラスト開発環境のロッカー
コンテナの用意ができたのだ今回は一番
簡単なデブコンテナとマイクロソフトが
用意したドッカーイメージを使った方法を
紹介したけれどもう少し凝ったことを
しようとするとドッカーファイルを書い
たりと面倒が増えてしまうのだ
需要がありそうならそのあたりも動画に
しようと思うご視聴ありがとうございまし
た
5.0 / 5 (0 votes)