ちゃんなるぶろぐ

エンジニア5年生🧑‍💻 オライリーとにらめっこする毎日。

【5分でできる!】Mac上で”爆速”でUbuntu×Docker環境を構築→VSCodeで接続する🐳〜Docker Desktopは使わない〜

どうも、ちゃんなるです🐻

今回は、MacでDocker開発環境をサクッと手に入れます🐳 ※Docker Desktopは使いません。

今回やりたいこと

Mac上で、Dockerを使ったシステム開発を、VSCodeを使って行うこと。

実はDockerはLinux上でしか動きません。なので、、、 これは以前紹介してるのでご参照を✋(およそ3分で読めます)

chan-naru.hatenablog.com

課題

Ubuntu側のDocker(docker/docker composeコマンド)を使ってコンテナを起動する際、それに用いるDockerfileやdocker-compose.yamlファイル、各種スクリプトファイルなどをどうやって参照するかが悩みどころです👀

やり方は大きく2つで、ソースファイルをホスト側に置くか、VM側に置くかです。

前者はいわばローカル環境上でフォルダやファイルを作り、それをVM側に共有したのちにVM内でDockerコンテナを起動させます。(これは、Multipassのmount機能を用いて実現可能です。今回は説明を省きます。)

後者はVMをリモートサーバと見立て、VSCodeIntelliJといったIDEからSSH接続をしてVM内でファイルやフォルダを作ってDockerコンテナを起動させます。

今回は、後者でやりたいことを実現します🔥

実現方法

下記のステップを踏みます。

  • MultipassでDocker入りのUbuntuを起動すること(過去記事にて解決)
  • Ubuntuにホストマシン(Mac)からSSH接続できるようにすること
    • Multipassの秘密鍵を使ってできる(👈今回はこちら)
    • Multipassの秘密鍵とは別に新規作成してもできる
  • 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」を使って接続する

拡張機能をインストールすると、下の画像の青枠のタブが表示されます。

Visual Studio Code拡張機能 Remote - SSH を検索

青枠のタブを開くと先ほど~/.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

参考文献