ちゃんなるぶろぐ

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

【3分でできる!】MacでDocker環境構築🐳〜Docker Desktopは使わない〜

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

今回は、MacでDocker環境をサクッと構築します👍

Docker Desktopは使いません。

今回やりたいこと

Macの上でDockerを動かすこと。

DockerやDocker Composeといったコマンドを好き放題使うことです👍

$ docker xxx

実はDockerはLinux上でしか動きません。なので、Mac上でLinux(Ubuntu)を動かし、その中にDockerを導入します🐳

実現方法

Multipassというツールを使います。

multipass.run

インストール方法はこちらをご参照ください。インストーラを使う方法、Homebrewを使う方法の2通りあるので、お好きな方をどうぞ👍

※インストール方法の説明は省略します。

実を言うとDockerが動く状態のUbuntuイメージが用意されており、コマンド一発で環境構築できます👏笑

Macのターミナルで下記を実行します。

$ multipass launch docker --name docker-ubuntu --mem 8G --disk 40G --cpus 2

このコマンドでは、Docker入りのUbuntu22.04環境をdocker-ubuntuという名前で用意し、メモリを8GB、ディスク容量を40GB、CPU数を2つ割り当てます。命名や割り当てる数値はどうぞよしなに✋

起動した環境は下記コマンドでログインできます。

$ multipass shell docker-ubuntu

Ubuntu端末にログインした様子

はい、こっからもう先はDockerが使えます👏

おまけ〜DockerでNginxコンテナ立ち上げてブラウザからアクセスしてみる〜

Ubuntu内でdocker runコマンドを実行し、Nginxコンテナを立ち上げてみましょう。

ubuntu:~$ docker run --name nginx -d -p 8080:80 nginx:1.23
Unable to find image 'nginx:1.23' locally
1.23: Pulling from library/nginx
4b7f5b2a3113: Pull complete 
3c419414ca9e: Pull complete 
(以下省略...)

docker psでコンテナを確認すると、Ubuntuの8080番ポートでNginxへアクセスできるようです。(詳細は省く)

ubuntu:~$ docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED              STATUS              PORTS                                   NAMES
c054a13eac1a   nginx:1.23   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx

ブラウザからアクセスしてみましょう。アクセスURLはhttp://<UbuntuのIPアドレス>:8080です。確認するには、Mac側(Ubuntu内ではない)で下記を実行してみましょう。

$ multipass info docker-ubuntu
Name:           docker-ubuntu
State:          Running
IPv4:           <ここに表示されるやつがUbuntuのIPアドレス>
(以降省略...)

アクセスするとNginxの画面が表示され、きちんとNginxのDockerコンテナが動かせていることがわかります👏

Nginxの画面

まとめと課題

  • ⭕️:Multipassを使えば、Linux(Ubuntu)環境やDocker環境がサクッと作れる
  • ❌:サクッと作れるが故に、Linux(Ubuntu)やDockerの仕組み自体を知らないままDockerを使うことになる

今回の目的は「Dockerを動かす」だったので一旦OK。ですが、仕組みを理解するべく学び続けます。また別の記事で紹介させていただきますね🙌

環境

実装や動作確認の際に使ったツールたちです。 PCはM1 MacBook Proです。

技術 バージョン
OS macOS Ventura Version 13.1
VM multipass version 1.10.1+mac