MacでDockerのインストールとチュートリアルまで

スポンサーリンク

今更ながらやっと Docker を使える環境になったので Mac を使用して Docker のインストールからチュートリアルまでの手順をまとめました。

f:id:tasukujp:20191013171419p:plain

インストール

公式サイトの Docker Hub から Sign Up して Docker Desktop for Mac を ダウンロード してください。昔はサインインしなくてもダウンロードできていましたが今は必要になっています。

ダウンロード画面には Tutorial も含まれているので一緒に進めていきましょう。

Docker.dmg のインストール方法は通常の Mac アプリケーションと同じです。 needs privileged access と表示されるのでパスワードを入力してください。インストールして起動した後、以下のようにグリーンマークになると成功です。

f:id:tasukujp:20191013173141p:plain

コマンドも追加されているのでバージョンを確認してみましょう。Docker のバージョンは 19.03.2 ですがこれは 2019年3月にリリースされたことを意味しています。

$ docker --version
Docker version 19.03.2, build 6a30dfc

$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

$ docker-machine --version
docker-machine version 0.16.2, build bd45ab13

チュートリアル①

次に Tutorial 用のリポジトリを clone します。

f:id:tasukujp:20191013174215p:plain

Docker イメージをビルドします。

f:id:tasukujp:20191013174308p:plain

ビルドされたイメージはローカルマシンの Docker イメージレジストリにあるので以下のコマンドで確認してみてください。

$ docker image ls
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
tasukujp/cheers2019   latest              79d4be09caf5        2 minutes ago       4.01MB
<none>                <none>              2fe17f54bce1        2 minutes ago       356MB
golang                1.11-alpine         e116d2efa2ab        7 weeks ago         312MB

それでは作成したイメージで最初のコンテナを実行しましょう。Docker のアスキーアートが表示されると思います。

f:id:tasukujp:20191013175110p:plain

実行した以下のコマンドについてですが、 run で指定したイメージのコンテナを実行し、 -it オプションでゲストとホストの標準入出力をつなげて、 --rm でコンテナの終了時に自動的にコンテナを削除されるという意味です。

$ docker run -it --rm tasukujp/cheers2019

最後に Docker Hub にビルドしたイメージを push して Tutorial は終了です。 doodle には他にも summer2019birthday2019 がありますので同じように試してみましょう。

f:id:tasukujp:20191013180101p:plain

チュートリアル②

公式に hello-world という単純なイメージが用意されていますので、インストールが機能することを確認します。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
...
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
...

イメージがローカルインストールされてコンテナが作成されました。

$ docker images hello-world
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        9 months ago        1.84kB

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
087deeda8787        hello-world         "/hello"            11 minutes ago      Exited (0) 11 minutes ago                       cool_kepler

docker run コマンドは以下のコマンドに分解できます。イメージの取得は初めにローカルから探して、無ければ Docker Hub に探しにいきます。上記の実行時でも最初にダウンロードが行われているのがわかると思います。

docker pull  # イメージの取得
docker create  # コンテナの作成
docker start  # コンテナの起動

最後に hallo-world イメージの実行時に表示されていたコマンドを実行してみましょう。ダウンロードと起動に伴ってコンテナの中にログインできました。

$ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
Digest: sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58
Status: Downloaded newer image for ubuntu:latest
root@5100f5fc06db:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

コンテナから抜けるには ctrl+pqexit です。ただし exit の場合はログインしてるシェルが親プロセスの場合、コンテナで起動しているプロセスが無くなってしまいコンテナも停止します。 attach とか exec でログインする方法にもよるのでまた別の記事にしたいと思います。

root@5100f5fc06db:/# exit
exit

最後に hello-world のイメージとコンテナを削除します。

$ docker image rm hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 087deeda8787 is using its referenced image fce289e99eb9
doodle/cheers2019 on  master

失敗しました。先にコンテナから削除しないといけないようです。

$ docker container rm 087deeda8787
087deeda8787
doodle/cheers2019 on  master

$ docker image rm hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3

以下のリンク先にも他のチュートリアル的な事が書かれていますので試してみてください。

Get started with Docker Desktop for Mac | Docker Documentation