DockerをMacにインストールする（更新: 2019/7/13）

## はじめに :whale:
MacにDockerをインストールする方法についてまとめた記事です。
ザクザク行けば10分程度でnginxの起動までいけると思います。
この記事の目的は**Dockerに慣れること**です。

よって、対象者は

* Dockerやってみたい！ってずっと思ってる :cry:
* でも、よくわからない。Dockerこわい :ghost: 

というDocker初心者向けとなります。

**バージョンアップなどにより、手順が異なる可能性がありますのでご了承下さい。**



また、[@y_tsubuku](https://twitter.com/y_tsubuku)が開発する[yaritori - メール共有システム](https://yaritori.jp/)も、良ければご覧ください :tada:

## Docker for Macをインストール :package:
公式サイトからDockerのアカウントを作ってログインし、DockerHubからダウンロードしてインストールします。
https://hub.docker.com/editions/community/docker-ce-desktop-mac

![ 2019-07-09 at 22.04.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133879/19f2c2de-89e4-c3db-2f15-b0b801174264.png)

![ 2019-07-09 at 22.04.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133879/aa6c112e-0e5c-c5bd-14d1-59bc4f19ce90.png)

![ 2019-07-09 at 22.02.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133879/70f18b76-b87e-bc06-d3b2-3f10b56401a9.png)

正しくインストールされているか確認する

```shell
$docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/amd64
 Experimental: true
```

## nginxを起動してみる :rocket: 
`docker run -d -p 80:80 --name {コンテナ名} nginx`
を実行すると、nginxを80番ポートで起動してくれる。
docker imageがローカルで見つからない場合は、[Docker Hub](https://hub.docker.com/_/nginx/)からpullしてくれる。賢い。

試しに、コンテナ名は `webserver`としましょう。

```shell
$docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally

latest: Pulling from library/nginx
ff3d52d8f55f: Pull complete 
b05436c68d6a: Pull complete 
961dd3f5d836: Pull complete 
Digest: sha256:12d30ce421ad530494d588f87b2328ddc3cae666e77ea1ae5ac3a6661e52cde6
Status: Downloaded newer image for nginx:latest
edb359e954413f077b515f2fca388d2292294bd170ff7d2d3b0ec74f8716cd1a
```

nginxが立ち上がっているかを確認するため、Dockerのプロセスをチェックする

```shell
$docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
edb359e95441        nginx               "nginx -g 'daemon ..."   9 minutes ago       Up 9 minutes        0.0.0.0:80->80/tcp   webserver
```

[localhost](http://localhost/)にアクセスしてブラウザで確認する

<img width="1279" alt="Welcome_to_nginx_.png" src="https://qiita-image-store.s3.amazonaws.com/0/99874/3647b044-ab55-c900-7516-2b2fd6bdc7a4.png">



ちゃんと動いてる！

止めるときは `docker container stop {コンテナ名}`で止めることができる。
もう一回起動したい場合は、`$docker container start {コンテナ名}`でOK!

```shell
$docker container stop webserver
webserver

$docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

$docker container start webserver
webserver

```


ちなみに、 `docker container ls -a`だと起動していない状態のコンテナも表示することができる。

```shell
$docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
edb359e95441        nginx               "nginx -g 'daemon ..."   45 minutes ago      Exited (0) 17 minutes ago                       webserver
```

## nginxを削除してみる :x: 
作ったコンテナやイメージを削除したいときはきっとくるはずなので、先に削除を試してみる。

### コンテナの削除
コンテナを削除したい時は、`docker container rm {コンテナ名}`を使用する。

```shell
$docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
edb359e95441        nginx               "nginx -g 'daemon ..."   48 minutes ago      Exited (0) 20 minutes ago                       webserver

$docker container rm webserver
webserver

$docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```

### イメージの削除
イメージを削除したい時は、`docker image rm {IDもしくは image name}`で削除できる

```shell
$docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:12d30ce421ad530494d588f87b2328ddc3cae666e77ea1ae5ac3a6661e52cde6
Deleted: sha256:3448f27c273f3122fc554d7acf33796efb4df2ad9886efc092c3bfe716e897b7
Deleted: sha256:8c9de914a431b97e5df6e45ca5032d28d90e01e56e4824edd654e1311f0b9fae
Deleted: sha256:28f6824ebf777f77931a2e27dadc3d092a62f78b5d28851542135411981b2f99
Deleted: sha256:8781ec54ba04ce83ebcdb5d0bf0b2bb643e1234a1c6c8bec65e8d4b20e58a90d

docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
```

## 終わりに
Dockerに少し慣れることはできましたでしょうか。
次は[Docker Hub](https://hub.docker.com/)から別のイメージをpullしたり、コンテナを複数立ち上げて、コンテナ間で通信できるようにしてみましょう。~~（記事を書き次第、リンクさせる予定です。）~~
↓書きました :tada: 
[DockerでPHP7.0×Apacheの環境を構築する](http://qiita.com/kurkuru/items/fa7401a01c4d5dd98e4a)