序章

Shipyard は、Dockerサーバー用の管理ツールです。 Docker は、コンテナ化に使用される最先端のソフトウェアです。 Shipyardを使用すると、既存のコンテナを開始または停止したり、新しいコンテナを作成したりするために、各サーバーが実行されているコンテナを確認できます。

サーバーにShipyardを設定すると、グラフィックインターフェイス、コマンドラインインターフェイス、またはAPIを使用してShipyardにアクセスできます。 Shipyardには、他のDocker オーケストレーションツールの高度な機能の一部が欠けていますが、セットアップは非常に簡単で、無料で使用でき、自分で管理およびホストできます。

このチュートリアルでは、Shipyardをインストールし、Dockerサーバーに接続し、それを使用して新しいコンテナーを作成して起動する方法について説明します。 最終的には、Dockerホストを管理するためにサーバー上でShipyardを実行する必要があります。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • Docker1.5.0イメージを含む1つのUbuntu14.04ドロップレット。

Docker 1.5.0イメージオプションは、ドロップレット作成ページのアプリケーションタブのイメージの選択にあります。 このチュートリアルに従って、既存のDropletにDockerをインストールすることもできます。

:Ubuntu14.04の標準リポジトリのdocker.ioパッケージは非常に古い(バージョン0.9.1)。 Shipyardを使用するには、上記のいずれかの方法を使用して最新バージョンのDockerをインストールする必要があります。

ステップ1—造船所の設置

このステップでは、Shipyardをインストールします。 このチュートリアルのコマンドはすべてroot権限を必要とするため、rootユーザーとしてDropletにログインするのが最も簡単です。 root以外のユーザーとしてログインしている場合は、sudo suを実行してrootユーザーに切り替えることができます。

Dockerを実行すると、Dockerイメージとして出荷されるため、Shipyardのインストールは非常に簡単です。 Dockerレジストリからイメージをプルし、必要なコンテナを実行するだけです。 まず、造船所のデータベースデータを保持するデータボリュームコンテナを作成します。 このコンテナはそれ自体では何もしません。 これは、造船所のすべてのデータの場所を示す便利なラベルです。

docker create --name shipyard-rethinkdb-data shipyard/rethinkdb

データボリュームコンテナが作成されたので、Shipyardのデータベースサーバーを起動して、それらをリンクできます。

docker run -it -d --name shipyard-rethinkdb --restart=always --volumes-from shipyard-rethinkdb-data -p 127.0.0.1:49153:8080 -p 127.0.0.1:49154:28015 -p 127.0.0.1:29015:29015 shipyard/rethinkdb

これにより、分散データベースである RethinkDB を実行しているコンテナーが起動され、サーバー自体でローカルにのみアクセスできるようになります。 ブラウザでhttp://your_server_ip:49153にアクセスしようとしても、何も表示されないはずです。

Shipyardのデータベースが起動したので、別のコンテナを起動してデータベースにリンクすることで、Shipyard自体を実行できます。

docker run -it -p 8080:8080 -d --restart=always --name shipyard --link shipyard-rethinkdb:rethinkdb shipyard/shipyard

これで、ポート8080を使用して実行中のShipyardインスタンスにアクセスできます。

ステップ2—造船所へのアクセス

造船所が稼働しているので、それにアクセスする必要があります。 造船所には、GUI、コマンドラインインターフェイス(CLI)、またはAPIを介してアクセスできます。 CLIにアクセスすることから始めます。

CLIを使用した造船所へのアクセス

別のコンテナを実行することで、ShipyardCLIにアクセスできます。

docker run -ti --rm shipyard/shipyard-cli

-tiフラグは、コンテナーがインタラクティブであることを確認し、--rmフラグは、これを使い捨てコンテナーにします。つまり、処理が完了すると、自動的に削除されます。

shipyard cli>のようなShipyardCLIプロンプトが表示されます。 使用可能なコマンドのリストを取得するには、shipyard helpと入力します。

このコマンドプロンプトは、手順1で設定したShipyardインスタンスにまだ接続されていないため、最初に接続しましょう。

shipyard login

URLの入力を求められます。 http://your_server_ip:8080と入力します。 次に、ユーザー名とパスワードの入力を求められます。 ユーザー名とパスワードはデフォルトで設定されています。 ユーザー名にadminを入力し、パスワードにshipyardを入力します。 その後、造船所のプロンプトに戻ります。

これで、Shipyardインスタンスにadminとしてログインしました。 デフォルトのパスワードをそのままにしておくことは、セキュリティ上の大きなリスクとなるため、変更してみましょう。

shipyard change-password

新しいパスワードを選択して確認する必要があります。 新しいパスワードが安全であり、覚えておくことができることを確認してください。 これで、 CTRL +Dを押して造船所CLIを終了できます。

Shipyardコマンドラインは毎回Shipyardインスタンスに接続する必要があるため、Dockerコンテナを実行できる任意のシステムでShipyardコマンドラインを実行し、サーバーで実行されているShipyardインスタンスに接続できます。

GUIを使用した造船所へのアクセス

次に、Shipyardのグラフィックインターフェイスを見ていきます。 アクセスするには、ブラウザでhttp://your_server_ip:8080を開いてください。 ログイン画面が表示されます。 ユーザー名adminと選択した新しいパスワードを使用します。

ログインすると、Shipyardは Engines タブを表示し、Shipyardクラスターにまだエンジンがないことを警告します。 engine は、コンテナーを実行できるDockerホストです。 ここでは、Shipyardで管理する各Dockerサーバーを追加します。

ステップ3—エンジンの追加

ShipyardをデプロイしたばかりのDropletもDockerホストであるため、Shipyardで管理できるようになります。 それを行う前に; ただし、サーバーをエンジンとしてShipyardに追加する必要があります。

デフォルトでは、DockerはUnixソケット/var/run/docker.sockでリッスンするように構成されていますが、Shipyardインスタンスからそのソケットにアクセスすることはできません。 ポートでリクエストもリッスンするようにDockerを設定する必要があります。 これを行うには、お気に入りのテキストエディタを使用してDocker構成ファイルを編集します。 (ここでは、nanoを使用します。)

nano /etc/default/docker

最後に、次の行を追加します。

DOCKER_OPTS="-H tcp://your_server_ip:4243 -H unix:///var/run/docker.sock"

これにより、Dockerがポート4243で接続を受け入れるようになりますが、サーバー自体からのみです。 次に、Dockerを再起動して、新しい構成をロードします。

service docker restart

これにより、造船所のコンテナも再起動します。 --restart=alwaysでコンテナを実行したので、コンテナは自動的に復旧するはずです。 これは、次のコマンドを実行して確認できます。

docker ps

何らかの理由で造船所のコンテナが再起動しなかった場合は、docker start shipyard-rethinkdb shipyardを実行して手動で再起動できます。

Dockerホストが適切に構成されたので、エンジンとしてShipyardに追加できます。 造船所のGUIにアクセスし、エンジンタブに移動します。 +追加ボタンをクリックします。 次のようになります。

The 'add engine' screen has input fields like 'name' and 'labels'

次のフィールドを追加します。

  • 名前:Dropletのホスト名のように、エンジンを現在のDropletとして認識できる名前を使用します。
  • ラベル:エンジンに追加するラベルを使用すると、エンジンで実行できるコンテナーを制御できます。 このドロップレットを何に使用するかに応じて、プロダクションやテストなどのラベルを使用できます。
  • アドレス:開いたばかりのDockerポートを使用します:http://your_server_ip:4243

次に、下部にある追加ボタンをクリックします。 ShipyardはDockerホストに接続し、接続を確認して、エンジンとして追加します。 これが完了すると、エンジンタブに戻ります。 エンジンは最初はオフラインとして表示されます。 1、2秒待ってページを更新すると、Dockerホストの詳細が表示されるはずです。

ステップ4—造船所を使用したコンテナの展開

DockerホストをShipyardにエンジンとして追加したので、Shipyardを使用してコンテナーを開始、停止、およびデプロイできます。

造船所のGUIにアクセスし、コンテナタブを確認します。 これにより、Shipyardに追加したすべてのDockerホストで実行されているすべてのコンテナーが一覧表示されます。 他に何もしなかった場合、このタブには少なくとも3つのコンテナーが表示され、そのうち2つが実行されているはずです。

the 'Containers' tab should list 'shipyard', 'shipyard-rethinkdb' and 'shipyard-rethinkdb-data'

新しいWordpressブログを展開してみましょう。 公式のDockerリポジトリイメージを使用して、MySQLとWordpressのコンテナーをデプロイする必要があります。

+Deployボタンをクリックします。 次の画面では、デプロイするコンテナーを構成できます。 以下に指定するフィールドに情報を入力します。

Fields: Image, Container Name

  • 画像mariadbと入力します。 (MariaDBはMySQLのオープンソースフォークです。)
  • コンテナ名:好きなものを使用できます。 mysql-test
  • 環境:画像の説明から、使用できる環境変数がわかります。 この場合、MYSQL_ROOT_PASSWORD=6f23b328e7を使用してください。

Fields: Ports, Type, Restart Policy, Labels

  • Type :これは、コンテナーを複数のエンジンにデプロイする方法を決定します。 この場合、serviceを使用してください。
  • ラベル:これは、コンテナーをエンジンに一致させるために使用されます。 エンジンに割り当てたラベルの1つを確認するだけです。
  • 再起動ポリシー:これは、エラーまたはDockerの再起動後にコンテナを自動的に再起動するかどうかを決定します。 この場合、noのままにしておきます。

次に、展開をクリックします。 コンテナが起動するまでしばらく時間がかかります。 コンテナリストにリダイレクトされ、mysql-test(または使用した名前)という名前のコンテナが含まれているはずです。

Shipyardを使用して最初のDockerコンテナをデプロイしました。

次に、同じプロセスを使用して、MySQLコンテナにリンクされたWordPressコンテナをデプロイします。 + Deploy ボタンをもう一度クリックして、次のように入力します。

  • 画像wordpress
  • 名前wordpress-test
  • リンクmysql-test:mysql
  • タイプservice
  • ラベル:エンジンに使用したラベルを確認してください。
  • ポリシーの再起動:これはnoのままにしておきます。

もう1つやるべきことがあります。どこからでもこのWordPressコンテナのWebコンテンツにアクセスできるようにしたいので、そのポート80を公開する必要があります。 これを行うには、ポートの見出しの横にあるプラス記号をクリックします。

map tcp port 1234 to container port 80

プロトコルTCPを選択し、 IP を空白のままにして、1234ポートおよび80と入力します。 ] as ContainerPort

これで、展開をクリックできます。 もう一度、コンテナリストにリダイレクトされるまでにしばらく時間がかかります。 リストには、wordpress-testという名前のコンテナも表示されます。 詳細を表示するには、その横にあるリンクをクリックしてください。

container detail screen in Shipyard

ポートの下に、WordPressコンテナのポート80がサーバーのポート1234に公開されていることがわかります。 Shipyardは、このリストを、公開されたアドレスに移動するために使用できるクリック可能なリンクにするのに役立ちます。

このリンクをクリックしてください。 これにより、WordPressインストールウィザードが表示されます。 そのページのフィールドに入力すると、新しいWordPressブログにログインして、Webサイトとして表示できるようになります。

結論

これで、Shipyardを使用して、Dockerホストに実際のアプリケーションをデプロイすることに成功しました。

サーバー上でShipyardが稼働しています。 また、Dockerを使用して追加のサーバーを構成し、それらをShipyardインスタンスに接続して管理できるようにする必要があります。 また、CLIとGUIを使用してShipyardインスタンスに接続する方法を学び、GUIを使用してDockerホストに新しいコンテナーをデプロイする方法を学びました。

これで、 DockerRegistryで利用可能な何千ものWebアプリケーションを自由に試すことができます。 たとえば、このチュートリアルで説明されているように、Nginxコンテナをデプロイして、新しいWordPressブログをより読みやすいURLでホストできます。