【5分でできる!】Mac上で”爆速”でUbuntu×Docker環境を構築→VSCodeで接続する🐳〜Docker Desktopは使わない〜
どうも、ちゃんなるです🐻
今回は、MacでDocker開発環境をサクッと手に入れます🐳 ※Docker Desktopは使いません。
今回やりたいこと
Mac上で、Dockerを使ったシステム開発を、VSCodeを使って行うこと。
実はDockerはLinux上でしか動きません。なので、、、 これは以前紹介してるのでご参照を✋(およそ3分で読めます)
課題
Ubuntu側のDocker(docker/docker composeコマンド)を使ってコンテナを起動する際、それに用いるDockerfileやdocker-compose.yamlファイル、各種スクリプトファイルなどをどうやって参照するかが悩みどころです👀
やり方は大きく2つで、ソースファイルをホスト側に置くか、VM側に置くかです。
前者はいわばローカル環境上でフォルダやファイルを作り、それをVM側に共有したのちにVM内でDockerコンテナを起動させます。(これは、Multipassのmount機能を用いて実現可能です。今回は説明を省きます。)
後者はVMをリモートサーバと見立て、VSCodeやIntelliJといったIDEからSSH接続をしてVM内でファイルやフォルダを作ってDockerコンテナを起動させます。
今回は、後者でやりたいことを実現します🔥
実現方法
下記のステップを踏みます。
- MultipassでDocker入りのUbuntuを起動すること(過去記事にて解決)
- Ubuntuにホストマシン(Mac)からSSH接続できるようにすること
- VSCodeの拡張機能「RemoteSSH」を使って接続する
UbuntuにホストマシンからSSH接続する
Multipassの公開鍵が/var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa
にあるので、それを使用します。
まず、この鍵を~/.ssh/
にコピーし、ルート権限が不要になるよう権限設定をしましょう。
※コピー後の命名は任意。ここではmultipass_id_rsa
とした。
$ sudo cp /var/root/Library/Application\ Support/multipassd/ssh-keys/id_rsa ~/.ssh/multipass_id_rsa $ sudo chown `id -un` ~/.ssh/multipass_id_rsa
そして、接続。(IPアドレスの確認方法は過去記事に👍)
$ ssh -i ~/.ssh/multipass.id_rsa ubuntu@<UbuntuインスタンスのIPアドレス>
無事接続できたら~/.ssh/config
に下記のように追記しておきましょう。
※適当にubuntu-multipassとしてます。任意です。
Host multipass-docker-ubuntu HostName <UbuntuインスタンスのIPアドレス> User ubuntu IdentityFile ~/.ssh/multipass_id_rsa
準備完了です🐳💻
VSCodeの拡張機能「RemoteSSH」を使って接続する
拡張機能をインストールすると、下の画像の青枠のタブが表示されます。
青枠のタブを開くと先ほど~/.ssh/config
に記載した接続先名が表示されるので、接続できます👍
あとは煮るなり焼くなりお好きな開発ライフを🙋♂️
まとめと課題
- ⭕️:VSCodeとRemoteSSHを使えば、リモートサーバへの接続とその上での開発がとても簡単👍
- ⭕️:Multipassを使えばLinux環境やDocker環境がサクッと作れる🐳
- ❌:SSHや仮想環境の仕組み・概念を理解しないままでもなんとなく環境構築ができてしまう… →コマンドの打ち間違いなどをはじめエラーにぶつかったとき、なぜかVMに接続できなくなったりしたとき、どうしていいかわからなくなってしまうかもしれない💦
環境
実装や動作確認の際に使ったツールたちです。 PCはM1 MacBook Proです。
技術 | バージョン |
---|---|
OS | macOS Ventura Version 13.1 |
VM | multipass version 1.10.1+mac |
IDE | Visual Studio Code Version: 1.76.2 |