はじめてのDocker(Windows)

# はじめに
Dockerを触ってみたく、インストールからWordPressの環境構築までやってみました。
まずは、こちらの記事で概念理解をしてから

https://qiita.com/minato-naka/items/e9cd026747693759800c

# 環境

Docker Desktop 4.9.0

プロセッサ：11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz   2.42 GHz
実装RAM：16.0 GB
システムの種類：64 ビット オペレーティング システム、x64 ベース プロセッサ
エディション：Windows 11 Pro

# 手順
Dockerインストール
DockerでWordPressの環境構築

## Dockerインストール

### `Hyper-V`の有効化
`設定` -> `アプリ` -> `オプション機能` -> `Windowsのその他の機能`
から`Hyper-V`を有効化する

<img width="400" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/1d09a878-31fb-577e-a905-400f41fa3143.png">

### Docker をインストール

こちからからインストールします（記事を参考にさせていただきました）

https://www.docker.com/products/docker-desktop/

https://qiita.com/gahoh/items/7b21377b5c9e3ffddf4a#windows%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/e060b865-a1ee-5c4c-bd77-9380f30c7d14.png)

### Dockerを動かしてみる

https://qiita.com/minato-naka/items/8b31d28823cabaa9487a#nginx%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E4%BD%9C%E6%88%90

適当なディレクトリを作成して、その中に`docker-compose.yml`を作成します。
`New-Item -Path 'docker-compose.yml' -ItemType File`で作れます。

`docker-compose.yml`を編集(nginxのコンテナを作成します）

```yaml: docker-compose.yml
version: '3'
services:
    nginx:
        image: nginx:1.15
        ports:
            - 80:80
```

`docker-compose up -d`でコンテナが作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/36c25f8d-b9e4-0027-0400-02bfba5f86d5.png)

これで`http://localhost`にアクセスするDockerで`nginx`のコンテナが作成されているのが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/dba2ab09-8d9c-1aae-b997-3d2289129ec3.png)

`docker ps`で現在起動中のコンテナを表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/87f5e594-b5b8-3ccd-b3e2-a294ed52f4b6.png)

`docker-compose down`でコンテナを削除します。


## DockerでWordPressの環境構築

公式チュートリアル通りにやってみます

https://docs.docker.jp/compose/wordpress.html

まずは`docker-compose.yml`を修正します。

```yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
```

`docker-compose up -d`でコンテナを作成してから
`docker ps`で現在起動中のコンテナを表示すると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/c5023541-9239-9e95-b56c-0d380cb3b8d1.png)

WordpressとMySQLのコンテナが作成されているのが確認できます。

`http://localhost:8000`にアクセスするとWordpressの初期表示画面が確認できました。

<img width="350" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/6046075a-e7db-1d23-64a5-aea798bfcda3.png"><img width="350" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/f0b5ef18-ce25-9a4f-c5e8-94e4912ca641.png">
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/1c28cac0-72ed-87f1-dcf8-6ff36dfd74a8.png)


`docker-compose down`でコンテナとデフォルトネットワークは削除されますが、
 WordPressデータベースは残ってしまうので、すべて削除したい場合は、
`docker-compose down --volumes`コマンドを実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/3cdb0382-3334-4db5-740e-9abae12e4f94.png)

再度`docker-compose up -d`してから`http://localhost:8000`にアクセスするとデータが残っていたので
`docker-compose down --volumes`コマンドを実行
<img width="350" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/e2ec72eb-57dd-176c-ecb7-0b96874608e4.png"><img width="350" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/f6177cc8-f740-7083-5209-5ce0a8c363c2.png">
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631585/4383879a-6d86-44ac-bbf0-60b9b886865f.png)

# おわりに
かなりざっくりとですが、Dockerとは何かぐらいは理解できました。
こんな簡単なんだ。。。
`docker-compose.yml`を書き換えるだけでいろいろと試せるのはとても魅力的なので今後も使っていこうと思います。


# 参考
https://qiita.com/minato-naka/items/e9cd026747693759800c

https://qiita.com/gahoh/items/7b21377b5c9e3ffddf4a