DockerをmacOS(Mojave)にインストールする(2019/10/04)

# 対象者
* macOSに*Docker*,*docker-compose*環境構築をインストールしたい人

* Docker気になってるけど怖い、、、という人

超簡単だったので、安心してください。

# Docker
アプリのダウンロードをします。

## 公式サイトでDocker fo Macをダウンロード
https://hub.docker.com/editions/community/docker-ce-desktop-mac
<img width="1427" alt="スクリーンショット 2019-10-04 19.37.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152284/c17255f4-2a55-3e5a-0313-1c52d5e07d9a.png">



## (注意)ダウンロードする前にアカウント作成
ダウンロードする前にアカウント作成しなければならない仕様です。

<img width="518" alt="スクリーンショット 2019-10-04 19.42.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152284/b1fdf4d2-e3aa-ffce-9f6a-ca1cc1b91a61.png">

## インストーラーを起動
ダウンロードしたら、インストーラーを起動し終わり。

## 環境を確かめる
きちんとはいったか、調べる。

今回はバージョンコマンド。

```$ docker version```

```
$ docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:26:49 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:32:21 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683


```



# Docker Composeの構築
結論から言うと、上記をやっていればいらない。

## 公式サイトへ
https://docs.docker.com/compose/install/
<img width="1440" alt="スクリーンショット 2019-10-04 19.50.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152284/3fd24232-6ca5-c7d8-f2a7-a2c7c3e1f5ed.png">


## よく見るとMacは入れる必要がない
よく見ると、アプリを入れるとComposeは入ってるからインストールする必要がないと書いてある。

<img width="819" alt="スクリーンショット 2019-10-04 19.39.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152284/103b1519-f318-e4ae-a21e-c042e44c4de7.png">

## 確かめる
```
docker-compose --version
docker-compose version 1.24.1, build 4667896b
```

# Dockerを試してみる
公式サイトに則って試してみましょう。

## docker pull hello-world
DockerはDockerイメージというものを必要とするそうです。

最初はそれがないので、Dockerが専用のコマンドを作ってくれています。

```docker pull hello-world```

これを打つと　イメージファイル[hello-world](https://hub.docker.com/_/hello-world/)をダウンロードしなくても勝手にDocker Hubからダウンロードしてくれるようです。

親切ですね（？）

## 実行
```docker run イメージファイル名```で起動するようです。


```
%
docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
%
docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/


```

## ブラウザで確認
<img width="1042" alt="スクリーンショット 2019-10-04 20.12.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152284/64b9e3d4-67b1-e38c-ab71-8f1830492e5f.png">

できていますね。

## その他のコマンド
```
$ docker container ls
$ docker container stop webserver
$ docker container ls -a
$ docker container rm webserver
$ docker image ls
$ docker image rm nginx
```

# おわりに
私はワークショップの環境構築として指定されていたため、調べました。
mojaveでは大丈夫なのかと調べた意味もあります。

Composeは勝手に入っていたので拍子抜けでした。
アプリだからって知らないうちに使うかわからないものを入れておくってのはどうなのとは思いましたが、アプリ使うような層全体を見ればいいのかもしれないとも思います。