DockerでMysqlコンテナを作る

###この記事について
dockerコマンドをよく忘れるのでメモしておきます
mysqlを例にしています。
ただの備忘録です

###docker pull Dockerイメージの取得
```
docker pull mysql
```

###docker images -a Docker イメージの一覧を表示
```
docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               latest              3a5e53f63281        11 days ago         465MB
mysql               <none>              d5127813070b        2 years ago         407MB
```
###docker run コンテナの作成
```
docker run --name mysql-for-test -e MYSQL_ROOT_PASSWORD=password -d -p 13307:3306 mysql:latest
```
-dはコンテナをバックグラウンド実行するオプション
[docker run](http://docs.docker.jp/engine/reference/commandline/run.html)

###docker start [name] コンテナの起動
```
docker start mysql-for-test
mysql-for-test
```


###docker ps -a 現在実行中のコンテナの確認
```
docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
a0371102cea6        mysql:latest        "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes        33060/tcp, 0.0.0.0:13307->3306/tcp   mysql-for-test
```
###docker stop [name] コンテナの停止
```
docker stop mysql-for-test
mysql-for-test
```
###docker rmi イメージ削除
```
docker rmi mysql:latest
Untagged: mysql:latest
Untagged: mysql@sha256:f1df505c4c6e8eae599a0482e3bde3e761cd700c00cbc371a8161648a26817c0
Deleted: sha256:3a5e53f6328162f8d8bc70131658a721e8e7dcf7495f2fae7cfe4febdbcfefbb
Deleted: sha256:f2533710d884b7eb9329d63844e1504c2d166cdb9139be622f9a5ed5dbd8044c
Deleted: sha256:573b1ee1cfefd4e3c18ade60576f03e275e28b73d985ce551ae78b1a93a81ace
Deleted: sha256:a7de8634d9c2f1188b74aceb18c048e37ea86eace1c4614996e76abc065e71fb
Deleted: sha256:96b788fd084094ed5b2b00b29865ec25bdba4aba633b8a86bb7e485df21e9dfb
Deleted: sha256:c1f124fbef5b35b53dadbd9caa1a272bde42490963ec68daa0a0e52a516cf5f9
Deleted: sha256:5f7c68324b959d2c806db18d02f153bc810f9842722415e077351bc834cc8578
Deleted: sha256:338fc0cd3fb4b87a2b83d274e8fbf475fbde19947c4ac5c5eb6e981a6fb0e8f0
Deleted: sha256:f7a4ccab931f1d1e861961eb951a7806d91ccb375e737fe1f84282f6bbafd2be
Deleted: sha256:f388e1092f8fb931a3cd07a7381bd9707d19526ff81f8b624e932f4919c27a3e
Deleted: sha256:e209b7a884b4d2e9d56bbac40ced48f2caa6a19e7ad6eb6dd20ff754f3af2c5d
Deleted: sha256:2401cf11c5455d505ef49657afcc709197ffcdfc9bd732508e9b62578a30b3a5
Deleted: sha256:814c70fdae62bc26c603bfae861f00fb1c77fc0b1ee8d565717846f4df24ae5d
```
コンテナ起動時はコンテナに使用しているイメージは削除できない

###MySQL Workbenchで接続する設定
上記の例だと
IP 127.0.0.1 
Port 13307
username root
Password password
で繋がるはず

###docker volume ls Dockerボリュームを表示する
```
docker volume ls
DRIVER              VOLUME NAME
local               4af0b51aff028e66d409e273378cbae94384a5a19ad4d2b2e22020a050c2f1ab
```
docker volumeとはデータを永続化する場所とのこと
Mysqlのコンテナを作成するとVolumeも作成されています。
イメージやコンテナを削除してもVolumeは削除されない
[Docker、ボリューム(Volume)について真面目に調べた](https://qiita.com/gounx2/items/23b0dc8b8b95cc629f32)

###docker inspect [ボリューム名] Dockerボリュームの詳細を表示する
```
docker inspect 4af0b51aff028e66d409e273378cbae94384a5a19ad4d2b2e22020a050c2f1ab
[
    {
        "CreatedAt": "2020-01-26T11:30:51Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/4af0b51aff028e66d409e273378cbae94384a5a19ad4d2b2e22020a050c2f1ab/_data",
        "Name": "4af0b51aff028e66d409e273378cbae94384a5a19ad4d2b2e22020a050c2f1ab",
        "Options": null,
        "Scope": "local"
    }
]
```

###docker volume rm [ボリューム名] Dockerボリュームを削除する
```
docker volume rm e50120cd5bd6f95e469e056390285e62d4607cb171578ab965c404bd9cc6ac35
e50120cd5bd6f95e469e056390285e62d4607cb171578ab965c404bd9cc6ac35
```
使用中のボリュームを削除しようとした場合は以下のようにエラーが出て削除できません

```
docker volume rm e78cc14f113a5604b8ce19be097b9a293bf10e35ea17d0643ebfe8f1b875e416
Error response from daemon: remove e78cc14f113a5604b8ce19be097b9a293bf10e35ea17d0643ebfe8f1b875e416: volume is in use - [d78ae59aa2db6328999a0a02b552a72f5f8bf7ef047673778323fe1b4d276c7a]
```

###docker volume prune 停止しているコンテナのDockerボリュームを一括削除する
```
docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
9f2e7aece432721df0c486f424deaac4fd2ec599164f5dc942c68cb81cbed8b1
4af0b51aff028e66d409e273378cbae94384a5a19ad4d2b2e22020a050c2f1ab
d8158a2830563c99eb8907feacbe85da49f7186e9d4464d6e4ccc0666cd66b44
44e1f3a93792855219d361a11381fc5ce21eb7bac7f6940ef2617ebcb916c74e
d296e6bf49ecb4da2a84589ce1d7439621eedd1242fc979cfcff6636e175f568
e4a3ffc963c51b5d86e787344ee483215c354a8f72bbe6640a51d9c9760b8e5c

Total reclaimed space: 891.7MB
```

###docker volume create [ボリューム名] Dockerボリュームを新規作成する
```
docker volume create mysql-test-volume
mysql-test-volume
```

###Dockerボリュームを指定してコンテナを作成する
```
docker run --name mysql-for-test -v mysql-test-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d -p 13307:3306 mysql:latest
eb61f634a9b04e86e81470096489938cac77682e20be551c961f7395d18fc836
```
これでデータが永続化される・・・はず。

###今度書く
docker-compose使う方法