ドライを使ってECSインスタンス上で実行されているDockerコンテナを管理・監視する方法

このチュートリアルでは、**Dry**を使用してECSインスタンス上で実行されている**Dockerコンテナ**、イメージ、ネットワークを管理・監視する方法を学びます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-manage-and-monitor-docker-containers-using-dry_595077)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#必要条件
- 新しく作成したECSインスタンスをUbuntu 16.04でインストールしました。
- インスタンスに静的IPアドレス192.168.43.192が設定されています。
- インスタンスにrootパスワードを設定します。

#手順
DryでDockerコンテナを管理・監視するには、以下の手順に従います。

###Alibaba Cloud ECSインスタンスの起動
まず、[Alibaba Cloud ECS Console](https://account.alibabacloud.com/login/login.htm?oauth_callback=https%3A%2F%2Fecs.console.aliyun.com%2F%3Fspm%3Da2c65.11461447.0.0.68da4941BU6Uqs&lang=ja)にログオンします。次に、オペレーティングシステムとしてUbuntu 16.04を使用し、少なくとも2GBのRAMを搭載した新しい[ECSインスタンス](https://www.alibabacloud.com/help/ja/doc-detail/25424.htm)を作成します。最後に、[ECSインスタンス](https://www.alibabacloud.com/help/ja/doc-detail/25434.htm)に接続し、rootユーザーとしてログオンします。

Ubuntu 16.04インスタンスにログオンしたら、以下のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

```
apt-get update -y
```

#Dockerのインストール
次のステップに進む前に、インスタンスに[Docker CE](https://docs.docker.com/get-docker/)と[Docker compose](https://docs.docker.com/compose/?spm=a2c65.11461447.0.0.68da4941BU6Uqs)をインストールする必要があります。デフォルトでは、Ubuntu 16.04のデフォルトリポジトリにはDockerの最新バージョンはありません。そのため、そのためのPPAを追加する必要があります。これは以下のコマンドを実行することで行うことができます。

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

次に、以下のコマンドを実行してリポジトリを更新し、Docker CEとDocker composeをインストールします。

```
apt-get update -y
apt-get install docker-ce docker-compose -y
```
インストールが完了したら、以下のコマンドでDockerサービスの状態を確認することができます。

```
systemctl status docker
```

出力は以下のようになります。

```
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-11-15 20:25:06 IST; 56s ago
     Docs: https://docs.docker.com
 Main PID: 16125 (dockerd)
   CGroup: /system.slice/docker.service
           └─16125 /usr/bin/dockerd -H unix://

Nov 15 20:25:04 Node1 dockerd[16125]: time="2018-11-15T20:25:04.988356579+05:30" level=warning msg="Your kernel does not support swap memory li
Nov 15 20:25:04 Node1 dockerd[16125]: time="2018-11-15T20:25:04.989716941+05:30" level=warning msg="Your kernel does not support cgroup rt peri
Nov 15 20:25:04 Node1 dockerd[16125]: time="2018-11-15T20:25:04.991123520+05:30" level=warning msg="Your kernel does not support cgroup rt runt
Nov 15 20:25:05 Node1 dockerd[16125]: time="2018-11-15T20:25:05.000582570+05:30" level=info msg="Loading containers: start."
Nov 15 20:25:06 Node1 dockerd[16125]: time="2018-11-15T20:25:06.049283689+05:30" level=info msg="Default bridge (docker0) is assigned with an I
Nov 15 20:25:06 Node1 dockerd[16125]: time="2018-11-15T20:25:06.278993600+05:30" level=info msg="Loading containers: done."
Nov 15 20:25:06 Node1 dockerd[16125]: time="2018-11-15T20:25:06.353529803+05:30" level=info msg="Docker daemon" commit=4d60db4 graphdriver(s)=o
Nov 15 20:25:06 Node1 dockerd[16125]: time="2018-11-15T20:25:06.361600332+05:30" level=info msg="Daemon has completed initialization"
Nov 15 20:25:06 Node1 systemd[1]: Started Docker Application Container Engine.
Nov 15 20:25:06 Node1 dockerd[16125]: time="2018-11-15T20:25:06.527874596+05:30" level=info msg="API listen on /var/run/docker.sock"
```

###Docker ComposeでWordpressとPhpMyAdminをインストールする
また、DryをテストするためにいくつかのDockerコンテナをセットアップする必要があります。ここでは、Docker composeを使ってWordpressとPhpMyAdminのコンテナをセットアップします。まず、コンテナのデータを保存するディレクトリと、コンテナを実行するためのdocker-compose.ymlを作成します。

```
mkdir wordpress
```

次に、wordpressとPhpMyAdminコンテナをセットアップするためのdocker-compose.ymlを作成します。

```
nano wordpress/docker-compose.yml
```

以下の行を追加します。

```
wordpress:
  image: wordpress
  links:
    - wordpress_db:mysql
  ports:
    - 8080:80
wordpress_db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: password
phpmyadmin:
  image: corbinu/docker-phpmyadmin
  links:
    - wordpress_db:mysql
  ports:
    - 8181:80
  environment:
    MYSQL_USERNAME: root
    MYSQL_ROOT_PASSWORD: password
```

保存してファイルを閉じます。ここで、以下のコマンドを実行してWordpressとPhpMyAdminのイメージをダウンロードし、バックグラウンドで両方のコンテナを実行します。

```
docker-compose up -d
```

セットアップが完了すると、Wordpressコンテナはポート8080で、PhpMyAdminコンテナはポート8181で待機しています。

###Wordpressコンテナにアクセスする
ウェブブラウザを開き、アドレス [http://](https://www.alibabacloud.com/blog/how-to-manage-and-monitor-docker-containers-using-dry_595077)192.168.43.192:8080 を入力します。Wordpressのインストールページにリダイレクトされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/8d1a4948-cc19-ac40-f152-8650f7c3ecb8.png)


言語を選択し、「続行」ボタンをクリックしてください。次のページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/4d48cd09-8e26-d481-f096-cfc4d94e92cb.png)


Sitename、adminユーザー名、パスワードを入力します。そして、Wordpressのインストールボタンをクリックします。インストールが完了すると、以下のようなページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3af6351a-7aa4-6cd5-0384-3b9567abc612.png)


ここで、管理者用のユーザー名とパスワードを入力します。そして、ログオンボタンをクリックします。すると、以下のページにWordpressのダッシュボードが表示されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d1701cb9-f52d-b189-6b09-4bde10a55ab1.png)

###PhpMyAdminコンテナにアクセスする
ウェブブラウザを開き、アドレスを [http://](https://www.alibabacloud.com/blog/how-to-manage-and-monitor-docker-containers-using-dry_595077)192.168.43.192:8181 と入力してください。次のページにリダイレクトされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/adca4c23-aa23-2f74-4ca3-916b3ab7b155.png)


ここで、ルートユーザー名とパスワードを入力します。そして、Goボタンをクリックします。すると以下のページにPhpMyAdminのダッシュボードが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/ccacbe94-c57d-ff86-0aff-bd870fb717d7.png)


#Dryのインストール
これで両方のコンテナが設定され、実行されています。次に、Dryをインスタンスにインストールする必要があります。以下のコマンドでDryの最新バージョンをダウンロードできます。

```
wget https://github.com/moncho/dry/releases/download/v0.9-beta.7/dry-linux-amd64
```

ダウンロードが完了したら、ダウンロードしたバイナリファイルを /usr/local/bin/ ディレクトリにコピーします。

```
cp dry-linux-amd64 /usr/local/bin/dry
```

次に、ドライバイナリファイルに許可を与えます。

```
chmod 755 /usr/local/bin/dry
```

では、以下のコマンドを実行してDry版を確認します。

```
dry -v
```

以下のように出力されます。

```
dry version 0.9-beta.7, build dfb8223a
```


###Dryの作業
ここで、ターミナルウィンドウから dry コマンドを実行するだけで dry ユーティリティが起動します。

```
dry
```

これにより、docker デーモンと実行中のコンテナに関するすべての有用な情報が読み込まれたプロンプトが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/37b52c1c-2549-0a89-b56b-cefce953368e.png)


さて、上/下矢印キーを使用してPhpMyAdminコンテナを選択し、Enterキーを押します。次のページにコンテナに関する情報が表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/66d60bb3-25c7-7980-8b5a-6a71f8ed5c96.png)


ここでは、上下矢印キーを使ってコンテナの再起動、停止、削除、キルを行うことができます。

ESC キーを押してメインダッシュボードに戻ります。次に、3を押して、以下のようにネットワークセクションにアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d7c6007f-431b-8010-f1c4-c977087901f3.png)


ここでは、コンテナのネットワーク IP アドレスと MAC アドレスが表示されます。ESC キーをもう一度押して、メインダッシュボードに戻ります。2 を押して、以下のように画像セクションにアクセスします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d9c410ec-f059-8581-bd89-759a979b1ab6.png)


ここでは、実行中のコンテナの画像を見ることができます。また、画像を削除したり、画像の履歴を表示したりすることもできます。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*