0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

multipassを使ってMac上でLinuxを動かす

Last updated at Posted at 2022-07-08

先日MacにおいてDockerのライセンス体系が変わり大きな事業者はライセンスを購入する必要があります。個人の利用や小さい事業者は無料で利用できますが、Mac上でLinuxを動かし、Linux上でdockerdやcliを使えるように整備したいと思います。

やりたいこと

Mac上でLinuxを動かす
dockerd/cliを利用する

Mac上でLinuxを動かす

クライアント仮想化のソフトウェアはバーチャルボックスなど多数ありますが用途などを考えるとmultipassが良さそう。

公式ではbrew経由のインストール手順の記載がありましたがgitのリリース経由のpkgを入れます

最新の安定板Multipass version 1.9.2

インストール後のバージョンと管理VMの確認

$ multipass version
multipass   1.9.2+mac
multipassd  1.9.2+mac

$ multipass list
No instances found.

起動する

$ multipass launch 22.04 --disk 20G
$ multipass list                   
Name                    State             IPv4             Image
national-yak            Running           192.168.64.4     Ubuntu 22.04 LTS

VMのシェルを使ってdockerをインストールする
https://docs.docker.com/engine/install/ubuntu/

$ multipass shell national-yak
ubuntu@ sudo apt-get remove docker docker-engine docker.io containerd runc
ubuntu@ sudo apt-get update
ubuntu@ sudo apt-get install ca-certificates curl gnupg lsb-release
ubuntu@ sudo mkdir -p /etc/apt/keyrings
ubuntu@ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
ubuntu@ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
ubuntu@ sudo apt-get update
ubuntu@ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
ubuntu@ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

Next.jsのイメージをデプロイする

テスト用コンテナを削除する

ubuntu@ sudo docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
edac709e49db   hello-world   "/hello"   3 minutes ago   Exited (0) 3 minutes ago             objective_gould
ubuntu@ sudo docker rm edac709e49db
edac709e49db
ubuntu@ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

dockerd/cliを利用する

dockerをデプロイする環境を整える
Nodeを導入する(手順は公式のgitを参照) 

ubuntu@ sudo apt install nodejs npm
ubuntu@ node -v
v12.22.9
ubuntu@ npm -v
8.5.1
ubuntu@ sudo npm install --global yarn
1.22.19

前回と同じ手順でPJを作成して動作確認する

ubuntu@ npx create-next-app --example with-docker testapp
ubuntu@ cd testapp/
ubuntu@ sudo docker build -t testapp .
ubuntu@ sudo docker run -p 3000:3000 testapp

IPアドレスを確認してブラウザでアクセスする

ubuntu@$ ip a
2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:dd:5f:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.64.4/24 metric 100 brd 192.168.64.255 scope global dynamic enp0s1

画面確認できました
http://192.168.64.4:3000/
image.png

Mac上でUbuntuのターミナルを利用可能でdockerの稼働も確認できました。後はlinuxとMac間でファイル授受できるようにディレクトリをマウントしたりgit cloneするなどででソースコードやDockerfileを共有していきたい。

何よりCanonical社が提供している機能であるので心強いです。このような技術(仮想化技術など含めて)をインターネット経由で即利用可能な時代に感謝いたします。。

自分のこれまでの経験ではRedhat系のOSを使うことが多かったですが、UbuntuなどDebian系の仕組みやコマンド体系も学習します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?