---
# System prepended metadata

title: Docker入門⑤
tags: [Docker]

---

# Docker入門⑤
###### tags: `Docker`

# Dockerに複数のコンテナを入れて動かしてみる

## WordPressの構築と導入の流れ
### WordPressの導入の構成
- WordPressコンテナ
    - WordPress（本体）
    - Apache
    - PHPの実行環境
- MySQLコンテナ
    - MySQL


:::warning
🐝 データベースは必ずコンテナで用意する必要はなく、Dockerの外に置くこともできる
:::

### Dockerネットワークを作成・削除する
- WordPressコンテナとMySQLコンテナはネットワークで繋がってないといけない
- 普通にコンテナを作っただけでは繋がらないので、仮想的なネットワークを作り、そこに両方のコンテナを所属させることでコンテナ同士を繋ぐことができる
- 仮想的なネットワークを作成するコマンドが"docker network create"
- ネットワークコマンドも、削除するときも"rm"、一覧を表示するときも"ls"を使用する

### MySQLコンテナ起動時のオプションと引数
#### オプション
- rootは全権限を持ったユーザー
- rootユーザーで毎回実行するのはセキュリティ的に良くないので、権限が制限されたユーザーで作業するのが一般的

| 項目 | オプション |
| - | - |
| ネットワーク名 | --net |
| MySQLのコンテナ名 | --name |
| 実行オプション | --dit |
| MySQLのrootパスワード | -e MYSQL_ROOT_PASSWORD |
| MySQLのデータベース領域名 | -e MYSQL_DATABASE |
| MySQLのユーザー名 | -e MYSQL_USER |
| MySQLのパスワード | -e MYSQL_PASSWORD |

#### 引数
- これらはDockerのオプションではなく、MySQLコンテナ固有のオプション

| 項目 | 引数 |
| - | - |
| 文字コード | --character-set-server= |
| 照合順序 | --collation-server= |
| 認証方式 | --default-authentication-plugin= |

### WordPressコンテナ導入時のオプションと引数
#### オプション

| 項目 | オプション |
| - | - |
| ネットワーク名 | --net |
| WordPressのコンテナ名 | --name |
| 実行オプション | --dit |
| ポート番号を指定 | -p |
| データベースのコンテナ名 | -e WORDPRESS_DB_HOST |
| データベース領域名 | -e WORDPRESS_DB_NAME |
| データベースのユーザー名 | -e WORDPRESS_DB_USER |
| データベースのパスワード | -e WORDPRESS_DB_PASSWORD |

:::danger
🚨 ここで設定するデータベースの情報はMySQLコンテナの設定と同じにしないといけない
:::

#### 引数
特になし

## ✅ WordPressコンテナとMySQLコンテナを作成し、WordPressをブラウザで立ち上げていくぅ！！

| 項目 | 値 |
| - | - |
| ネットワーク名 | wordpress000net1 |
| MySQLコンテナ名 | mysql000ex11 |
| MySQLイメージ名 | mysql |
| WordPressイメージ名 | wordpress000ex12 |
| WordPressイメージ名 | wordpress |

1. "wordpress000net1"ネットワークを作成

    ```shell=
    docker network create wordpress000net1
    ```
1. "mysql000ex11"コンテナ（MySQL）を作成
    ```shell=
    docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
    ```

1. "wordpress000ex12"コンテナ（WordPress）を作成

    ```shell=
    docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
    ```

1. "mysql000ex11"コンテナと"wordpress000ex12"コンテナが起動してるか確認

    ```shell=
    docker ps
    ```
1. http://localhost:8085/ にアクセス

1. 後始末していく

    ```shell=
    # 停止
    docker stop wordpress000ex12
    docker stop mysql000ex11

    # 削除
    docker rm wordpress000ex12
    docker rm mysql000ex11

    # イメージ削除
    docker image rm wordpress
    docker image rm mysql

    # ネットワーク削除
    docker network rm wordpress000net1
    ```