Alibaba CloudのElastic Compute Service (ECS)上でDockerをセットアップして実行する

このチュートリアルでは、**Alibaba Cloud Elastic Compute Service (ECS)**インスタンス上で**Docker**をセットアップして実行する方法を紹介します。

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

#Alibaba CloudのElastic Compute Service (ECS)とは？
Alibaba CloudのElastic Compute Service（ECS）は、物理サーバよりもシンプルで効率的な管理が可能な、弾力性のあるクラウドベースのサーバ製品です。インスタンスを作成したり、必要に応じてメモリを追加してスケールアップしたり、接続されたVPCを異なるリージョンに構築したり、アリババクラウドの膨大なクラウド製品やサービスの必須コンポーネントとして利用することができます。

#Dockerとは？
Dockerは、コンテナ内でアプリケーションを開発、デプロイ、実行するための管理ツールです。このプロセスはコンテナ化と呼ばれています。

Dockerコンテナは、Dockerイメージを実行することで起動します。Dockerイメージは、コード、ランタイム、必要なライブラリ、環境変数、設定ファイルなど、アプリケーション全体を実行するために必要なすべてを含む実行可能なパッケージです。コンテナはDockerイメージのランタイムインスタンスです。

同じホストマシン上で多くのコンテナを同時に実行することができます。これらのコンテナは、OSのハイパーバイザーの代わりにDockerによって管理されます。コンテナ化とは、アプリケーションが互いに完全に隔離された状態で実行されることを意味します。ただし、実行中のコンテナ間の通信用にポートを設定することもできます。対照的に、仮想マシンはホストマシンからかなりの計算能力を奪い、ほとんどの場合、必要以上に多くのリソースを持っています。

Dockerは軽量で効率的で、最も複雑なアプリケーションを管理することができます。ローカルでDockerコンテナを構築し、クラウドにデプロイし、必要に応じてスケールアップしてどこでも実行することができます。

Dockerはセットアップ、インストール、実行が簡単です。さっそくチェックしてみましょう。

#前提条件
Alibaba Cloudアカウントが必要です。まだお持ちでない場合は、[無料トライアル](https://www.alibabacloud.com/ja/campaign/free-trial)のページをご覧ください。

#設定
まず、Alibaba Cloud ECSインスタンスをスピンアップしてみましょう。Elastic Computer Serviceの製品ページに移動し、リージョンを選択します。準備ができたら、Create Instanceをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/1b15bebc-119e-0cd6-ac68-309496b89e03.png)

基本的な設定を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3f50fd35-4444-3b6d-5c58-a30992735417.png)

OSの種類を選択します。ここではUbuntu 16.04を使用します。

そして、「Next: Networking」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/1223eaed-03e0-76e1-c17e-fff93e80c1c8.png)

デフォルトのままで　「Next: System Configurations」をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/632b418c-64d1-6517-d575-3ff186ee981a.png)

インスタンスにrootとしてログインするためのパスワードを設定します。その後、「Next: Grouping」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/0c30f573-53ee-e811-22d5-570e29755333.png)

これをそのままにして、「Next: Preview」をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/f6fe8ca5-c64f-441b-6fd1-4fe6e96a5898.png)

詳細を確認し、規約に同意し、「Create Instance」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/21e5d033-136c-3f9d-d2fc-72ecd367b3a5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/d0da8905-d542-8ebd-65f8-5abdb38db40a.png)

コンソールをクリックしてください。インスタンスが回転しているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/137f99e5-89ba-7328-a196-0297704889e2.png)


インスタンスが起動したら、ターミナルからrootユーザーと先に設定したパスワードでログインすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/25c33910-99f2-a2b9-586a-fb67b2a7cd82.png)

これでDockerをインストールする準備が整いました。rootアクセスで作業を続けますが、この時点でUbuntuではあまり権限のないユーザーを設定しておくと良いでしょう。その場合はコマンドをsudoにする必要があります。

また、必要な`apt-get update`,` apt-get upgrade`,` apt-get dist-upgrade`のプロセスを今すぐ行うのも良いアイデアです。

Dockerをインストールするには、まず必要なパッケージを追加し、GPGプライバシーガードキーを追加し、リポジトリをソースに追加し、`apt-get update`を実行します。以下のコマンドを実行します。

```
apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

apt-get update
```

今度はDockerをインストールします。

```
apt-get install docker-ce
```

Ubuntu上でDockerが動作していることを確認します。

```
systemctl status docker
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/fca2d63f-3144-2630-7a8f-7c8364bde6c7.png)

これで実行中のDockerアプリケーションができたので、DockerHubのリポジトリからDockerイメージを下に引っ張ってきます。

`hello-world`のDockerイメージを実行してみましょう。以下のコマンドを実行します。

```
docker run hello-world
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/50a6e737-2035-b82c-3fac-29d9257b01d5.png)

今までプルダウンしていなかったので、DockerがローカルでDockerイメージを見つけられないことがわかると思いますが、先に進んでDocker公式リポジトリからイメージをプルしてくれます。

プルが完了すると、イメージを実行できるようになります。

DockerHubのウェブサイトで、自由にアクセスでき、Dockerコンテナで実行できるイメージの範囲をチェックしてみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/5499ed53-cd55-9353-f761-07646da59af0.png)

これでDockerのユーザーアカウントを作成して、自分のリポジトリを管理することができるようになりました。
楽しんでくださいね。

#まとめ
要約すると、いくつかの前提条件の手順に従って、Alibaba Cloudのアカウントにログインしました。次に、Alibaba Cloudの[Elastic Compute Service（ECS）](https://www.alibabacloud.com/ja/product/ecs)でUbuntuインスタンスを構築し、ssh経由でログインしました。

その後、いくつかの手順に従ってUbuntuを設定し、Dockerをインストールできるようにしました。Dockerをインストールし、`hello-world`イメージを実行しました。

本番環境でコンテナのクラスタ運用を考えている方は、Alibaba Cloud [Container Service](https://www.alibabacloud.com/ja/product/container-service)のパッケージを忘れずにチェックしておきましょう。Alibaba Cloud Container Serviceは、ECSインスタンス上でDockerコンテナと[Kubernetes](https://www.alibabacloud.com/ja/product/kubernetes)の両方を簡単にスケーリングして管理するのに役立つ高性能なコンテナオーケストレーションサービスです。Container Serviceは、コンテナクラスタのワンクリックデプロイをサポートしているため、独自のコンテナオーケストレーションソフトウェアをインストールして運用する必要がありません。また、Alibaba Cloudの仮想化、ストレージ、ネットワーク、セキュリティ製品のスイートと統合されています。

Alibaba Cloudの製品およびサービスに関するチュートリアルについては、[www.alibabacloud.com/getting-started](https://www.alibabacloud.com/ja/getting-started) をご覧ください。

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