Mac OS に Docker を入れてコンテナイメージを Macbook 内で起動するところまでやってみたのでまとめました。
本記事では以下 3 点を解説しています。
- Docker for Mac のインストール
- docker -v、docker ps、docker ps -a での状態確認
- Nginx を docker run コマンド一発で起動する
Docker desktop for Mac のインストール
Docker インストーラーをダウンロード
まず初めにdocker 公式ページの docker.com へアクセスして Docker.dmg をダウンロードします。
515 MB 程度です。
↓このような画面のダウンロードボタンからダウンロードできます。
ダウンロードした Docker.dmg からインストールを行う
ダウンロードした Docker.dmg をダブルクリックします。
しばらくすると、Docker.app を drag and drop するように指示されるのでおとなしく従います。
約 1.4 GB の Docker.app を”アプリケーションフォルダ"へコピーする処理が始まります。
アプリケーションの中にアイコンが登場すればインストールの完了です。
Docker の起動と初期設定
Docker を起動していきます。アプリケーションに登録された Docker のアイコンをダブルクリックします。
ネットワークコンポーネントへのアクセス許可しても良いか聞かれるので OK をタップします。
Mac の Dock(ランチャー)に Docker のアイコンが追加されるのでクリックします。
その後、 「Get started with Docker in a few easy steps!」 「ESTIMATED TIME:2 minutes」 と Docker のチュートリアルが出てきますが、あとでも設定できるのでパス。
次に Docker コンテナの画面へ遷移すると、まだコンテナが起動していないので以下のコマンドで docker run してね、と出てきます。
bash-3.2$ docker run -d -p 80:80 docker/getting-started
これもおとなしく従いましょう。Mac の「ターミナル」アプリを開いてコマンドを実行します。
bash-3.2$ docker run -d -p 80:80 docker/getting-started Unable to find image 'docker/getting-started:latest' locally latest: Pulling from docker/getting-started 188c0c94c7c5: Pull complete 617561f33ec6: Pull complete 7d856acdaa9c: Pull complete a0d3c6e28e6d: Pull complete af69a9b963c8: Pull complete 0739f3815ad8: Pull complete 7c7b75d0baf8: Pull complete Digest: sha256:b821569034e3b5fae03b40e64a866017067f3bf17effe185b782bdbf02179528 Status: Downloaded newer image for docker/getting-started:latest 1df0fe0d2c57c8b1f8b35299491e6d5213cc051cdc8f97f71a6c6447c293c2fc
コンテナがダウンロードされて起動するとアプリ側でも起動状態が反映されます。
Docker desktop for Mac のコマンド
Docker バージョン確認
docker -v
で docker バージョンを確認できます。
bash-3.2$ docker -v Docker version 20.10.0, build 7287ab3
Docker ps|コンテナプロセスの確認
docker ps
コマンドで起動しているコンテナプロセスの状態を確認できます。
bash-3.2$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1df0fe0d2c57 docker/getting-started "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp great_proskuriakova
docker ps -a
で詳細情報を確認できます。
bash-3.2$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1df0fe0d2c57 docker/getting-started "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp great_proskuriakova
Nginx を起動してみよう
Docker を利用するとかんたんに nginx を起動できます。
どのくらいかんたんかというとコマンド一発ですね。
docker run -d -p 80:80 --name webserver nginx
でOK。
それぞれのオプションを解説します。
オプション | 意味 |
---|---|
-d | デーモン(プロセス)としてバックグラウンドで動かします |
-p 80:80 | nginx へアクセスするポートを 80、そこからコンテナでの待ち受けポートを 80 にします |
--name webserver | 識別しやすいように起動コンテナに名前を付けれます |
nginx | image 名です |
bash-3.2$ docker run -d -p 80:80 --name webserver nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 6ec7b7d162b2: Pull complete cb420a90068e: Pull complete 2766c0bf2b07: Pull complete e05167b6a99d: Pull complete 70ac9d795e79: Pull complete Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9 Status: Downloaded newer image for nginx:latest 04ff754af3531d31f1b1c043b7baf7eb047aa241a3bb3e2ec351e213b748c3c5 docker: Error response from daemon: driver failed programming external connectivity on endpoint webserver (003b734ef97ba2f64529e62eb6775ed2b7c578b8c39624194422c082608ffbc4): Bind for 0.0.0.0:80 failed: port is already allocated. bash-3.2$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04ff754af353 nginx "/docker-entrypoint.…" 6 seconds ago Created webserver 1df0fe0d2c57 docker/getting-started "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:80->80/tcp great_proskuriakova
はい、これで nginx が起動しました。
コンテナはあらかじめイメージがレポジトリあって、それを pull してくるだけです。
ローカル開発環境をサクッと作れるのがお気に入りです。