Compass note

未踏の地へ踏み出すコンパス的エンジニアノート

Macbook に Docker for Mac をインストールし docker run で nginx を起動してみた。

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 程度です。

www.docker.com

↓このような画面のダウンロードボタンからダウンロードできます。

Docker Desktop for Mac のダウンロード

ダウンロードした Docker.dmg からインストールを行う

ダウンロードした Docker.dmg をダブルクリックします。

しばらくすると、Docker.app を drag and drop するように指示されるのでおとなしく従います。

"Docker.app を drag and drop するように指示されるのでおとなしく従います"

約 1.4 GB の Docker.app を”アプリケーションフォルダ"へコピーする処理が始まります。

f:id:team-creative-lab:20201229184011j:plain

アプリケーションの中にアイコンが登場すればインストールの完了です。

"アプリケーションの中にアイコンが登場すればインストールの完了です。"

Docker の起動と初期設定

Docker を起動していきます。アプリケーションに登録された Docker のアイコンをダブルクリックします。

ネットワークコンポーネントへのアクセス許可しても良いか聞かれるので OK をタップします。

"Docker を起動していきます。アプリケーションに登録された Docker のアイコンをダブルクリックします。"

Mac の Dock(ランチャー)に Docker のアイコンが追加されるのでクリックします。

その後、 「Get started with Docker in a few easy steps!」 「ESTIMATED TIME:2 minutes」 と Docker のチュートリアルが出てきますが、あとでも設定できるのでパス。

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 run container status コンテナがダウンロードされて起動するとアプリ側でも起動状態が反映されます。"

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 してくるだけです。

ローカル開発環境をサクッと作れるのがお気に入りです。

    Amazonチャージ