アリババコンテナを使った本番Docker環境の設定方法

本記事では、Ant Financialが大規模なKubernetesクラスタを効率的かつ確実に管理する方法を紹介し、クラスタ管理システムの中核となるコンポーネントについて考察しています。

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/6d256d29-84c1-9cf3-8663-9aef8fbba67c.png)


コンテナの移植性、柔軟性、メンテナンス性の高さから、DockerがDevOpsの実践者の間で人気があるのは当然のことです。ほぼすべての技術系企業、そして技術系以外の企業の中にもDockerを何らかの方法で使用している企業は少なくありません。

Dockerを実行するには様々な方法があります。しかし、Dockerコンテナのセットアップや管理を自分で行うことなく、簡単にDockerコンテナを利用できるソリューションを探しているのであれば、Alibaba Container Serviceが良いソリューションとなるでしょう。この記事では、Alibaba Container Serviceを使い始める方法を紹介します。

####Alibaba Container Serviceを使い始める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/33a0edf5-f136-a4b8-bcc9-ff39a34b4031.png)

*アリババクラウドコンソール*

Dockerのユビキタス化が進んでいるおかげで、Alibaba Container Serviceを使って本番環境に対応したDocker環境をスピンアップする方法を取り上げてみました。Alibaba Container Serviceを使い始めるには、まず、新しいDocker Clusterを作成しなければなりません。これを行うには、Alibaba Cloud Console内のContainer Serviceボタンをクリックして、Alibaba Container Serviceダッシュボードに向かいます。ここで注意しておきたいのは、初めてAlibaba Container Serviceにアクセスする場合は、アクティベートするように求められます。このステップでは、サービスの利用規約への同意を求めるだけで、アカウントに料金が発生することはありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/7492eda6-afba-7de7-3db8-7dff2a8a0180.png)

*アリババコンテナサービスの概要*

サービスを有効にすると、コンテナサービスの概要に移動します。このページでは、"Create Cluster "と書かれたボタンを使ってクラスタを作成するオプションが表示されます。これをクリックすると、新しいコンテナクラスタを作成するために必要な情報をすべて選択できるページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/f889262a-3501-3f0b-27ca-c1cecece866e.png)

*新しいコンテナクラスターのチェックアウト*

高いレベルでは、このページに記載されている情報は非常にわかりやすいはずです。他のAlibaba Cloud製品と同様に、インスタンスを稼働させるためのリージョンとゾーンを選択する必要があります。一般的な設定とは異なり、ネットワークタイプが1つしかないことです。このネットワークを使用すると、アリババクラウド内にプライベートネットワークを作成し、アプリケーションインフラストラクチャをアリババクラウドの他の部分から分離しておくことができます。

もう1つ注目すべき構成オプションは、Swarm Mode Cluster Modeオプションです。SwarmモードはDocker 1.12の機能で、"DockerエンジンとSwarmのクラスタ管理機能とコンテナオーケストレーション機能を統合し、サービスコンセプトとLVSベースのL4ロードバランシング（RoutingMesh）を追加する "というものです。この記事を書いている時点では、Swarm Modeクラスタは現在ベータ版となっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/a5f9796d-8d6f-e5ca-29b9-9c521916bd01.png)

*クラスタ構成の確認*

チェックアウト後、新しいクラスタで起動されるすべてのサービスの確認画面が表示されます。これは通常、いくつかのECSインスタンス、EIPインスタンス、ロードバランサー、セキュリティグループです。Container Service上でのクラスタのセットアップが初めての場合は、Resource Access Managementサービスのアクティベーションが必要になることを知っておいてください。

####クラスタ上でのアプリケーションの起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/2101c21d-acf1-0c78-beae-2ddf77251a47.png)

*アリババコンテナサービスのアプリケーション*

ピカピカの新しいクラスタを手に入れたので、Dockerコンテナをデプロイしてインターネットに公開することができます。これを行うには、Alibaba Container Serviceダッシュボード内のアプリケーションリストに移動し、"Create Application "ボタンをクリックしてください。これにより、新しいアプリケーションウィザードが表示され、アプリケーションを起動する前に、コンテナやクラスタから個々のコンテナの設定まで、すべてを選択することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/dc439361-8534-31a3-2076-bd8893e5cdeb.png)

*新規アプリケーション基本情報*

このデモの目的のために、簡単なWordPressアプリケーションを起動することにしました。アプリケーションの作成中に「Create with Image」ボタンを選択すると、Docker Hubで公開されている任意のイメージを選択できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/e01a3ba6-f017-758e-2011-7a3fc4116243.png)


*画像選択モード*

####アプリケーション構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3daba3e7-0082-7dae-73e7-dc5c8ec3af1b.png)

*アプリケーション構成*

新しいアプリケーションを起動する前に、まず基本的な設定をいくつか用意しなければなりません。Docker Hubから事前に設定済みのイメージを選択した場合、このプロセスの多くはすでに行われています。とはいえ、アプリケーションがインターネットからアクセスできるようにするためには、いくつかのステップを踏まなければなりません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/542a20e8-cfcd-cd19-97db-d34d910c1e27.png)

*ネットワーク構成*

新しいDockerアプリケーションの設定で最も重要なのはネットワークアクセスです。ほとんどのWebアプリケーションは一般的にポート80で利用可能なので、コンテナ内のポート80をパブリックネットワークに公開する必要があります。このデモの目的のために、私はAlibaba Cloudが提供する事前に生成されたドメイン名を使用しています。これは、ドメイン設定（上図）の中にスラッグを入力することで行うことができます。

[http://<slug>.<id>.<region>.alicontainer.com.](https://www.alibabacloud.com/blog/setting-up-a-production-docker-environment-with-alibaba-container_257496)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/e49d5c0c-004b-a2cd-8ce6-d753fea19105.png)


*展開構成*

アリババコンテナサービスのもう一つの大きな特徴は、デプロイメント設定であり、新しいアプリケーションを起動する前に設定することができます。ここにはいくつかのオプションがありますが、最も重要なのは自動スケーリングで、現在の負荷に応じて、アプリケーションに割り当てられるリソースを自動的に増減させることができます。

####アプリケーションへのアクセス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/bc3f909b-2253-7bf3-3e83-13a4abdcfc81.png)

*アプリケーション内容*

アプリケーションを起動したら、あとはアクセスするだけです。生成した URL を見つけるには、アプリケーションの詳細を開き、アクセスエンドポイントの設定を見てください。新しいブラウザのウィンドウまたはタブで開くと、新しいアプリケーションのホームページに直接アクセスすることができます（私たちの場合は、WordPress のセットアップウィザードです）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/be2a85ca-0bf0-f864-9cf5-2db4d32549b6.png)

*WordPressのセットアップウィザード*

####物事をさらに進める
シンプルなWebアプリケーションを起動することは、Alibaba Container Serviceを使いこなすための素晴らしい方法ですが、Auto ScalingやDocker Hubイメージから直接新しいサービスを自動的に起動する機能のおかげで、複雑なサービス指向のアプリケーションを最小限の労力で起動することができることが容易にわかります。コンテナサービスの管理と安全性についてのニュアンスはこの記事の範囲外ですが、Alibaba Container Serviceの使いやすさのおかげで、どんなアプリケーションを実行するのに必要なインフラストラクチャの立ち上げはすぐにできるようになります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/b2cef6bf-3b06-7772-8e82-bcfa687ee821.png)

Zachary Flower ([@zachflower](https://twitter.com/zachflower?spm=a2c65.11461447.0.0.5c6f33a4pdtchL)) はフリーランスのライターであり、ボルダーを拠点とするデザインとブランディングのエマソンストーンでリードデベロッパーを務めています。シンプルさと使いやすさを追求する目を持ち、エンドユーザーとビジネスの両方の目標を念頭に置いて製品を作るように努めています。NSA向けプロジェクトの構築からName.comやBufferのような企業のための機能開発まで、ザックは常に不必要な再発明に反対する姿勢を貫き、開発プロジェクトの効率性と信頼性を向上させるために、定評のあるサードパーティ製やオープンソースのサービスやソリューションの使用をしばしば提唱しています。

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