先日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/
Mac上でUbuntuのターミナルを利用可能でdockerの稼働も確認できました。後はlinuxとMac間でファイル授受できるようにディレクトリをマウントしたりgit cloneするなどででソースコードやDockerfileを共有していきたい。
何よりCanonical社が提供している機能であるので心強いです。このような技術(仮想化技術など含めて)をインターネット経由で即利用可能な時代に感謝いたします。。
自分のこれまでの経験ではRedhat系のOSを使うことが多かったですが、UbuntuなどDebian系の仕組みやコマンド体系も学習します。