Ubuntu14.04でShipyardを使用してWordPressをデプロイする方法
序章
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をインストールすることもできます。
注: docker.io
Ubuntu 14.04の標準リポジトリのパッケージは非常に古い(バージョン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
これで、ポートを使用して実行中のShipyardインスタンスにアクセスできます 8080
.
ステップ2—造船所へのアクセス
造船所が稼働しているので、それにアクセスする必要があります。 造船所には、GUI、コマンドラインインターフェイス(CLI)、またはAPIを介してアクセスできます。 CLIにアクセスすることから始めます。
CLIを使用した造船所へのアクセス
別のコンテナを実行することで、ShipyardCLIにアクセスできます。
docker run -ti --rm shipyard/shipyard-cli
The -ti
フラグは、コンテナがインタラクティブであることを確認し、 --rm
フラグはこれを使い捨ての容器にします。つまり、使い終わったら自動的に削除されます。
これで、ShipyardCLIプロンプトが表示されます。これは次のようになります。 shipyard cli>
. 使用可能なコマンドのリストを取得するには、次のように入力できます 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にアクセスし、エンジンタブに移動します。 +追加ボタンをクリックします。 次のようになります。
次のフィールドを追加します。
- 名前:Dropletのホスト名のように、エンジンを現在のDropletとして認識できる名前を使用します。
- ラベル:エンジンに追加するラベルを使用すると、エンジンでの実行を許可するコンテナーを制御できます。 このドロップレットを何に使用するかに応じて、プロダクションやテストなどのラベルを使用できます。
- アドレス:開いたばかりのDockerポートを使用します。
http://your_server_ip:4243
次に、下部にある追加ボタンをクリックします。 ShipyardはDockerホストに接続し、接続を確認して、エンジンとして追加します。 これが完了すると、エンジンタブに戻ります。 エンジンは最初はオフラインとして表示されます。 1、2秒待ってページを更新すると、Dockerホストの詳細が表示されるはずです。
ステップ4—造船所を使用したコンテナの展開
DockerホストをShipyardにエンジンとして追加したので、Shipyardを使用してコンテナーを開始、停止、およびデプロイできます。
造船所のGUIにアクセスし、コンテナタブを確認します。 これにより、Shipyardに追加したすべてのDockerホストで実行されているすべてのコンテナーが一覧表示されます。 他に何もしなかった場合、このタブには少なくとも3つのコンテナが表示され、そのうち2つが実行されています。
新しいWordpressブログを展開してみましょう。 公式のDockerリポジトリイメージを使用して、MySQLとWordpressのコンテナーをデプロイする必要があります。
+Deployボタンをクリックします。 次の画面では、デプロイするコンテナを構成できます。 以下に指定するフィールドに情報を入力します。
- 画像:入力
mariadb
. (MariaDBはMySQLのオープンソースフォークです。) - コンテナ名:好きなものを使用できます。
mysql-test
. - 環境:画像の説明から、使用できる環境変数がわかります。 この場合、
MYSQL_ROOT_PASSWORD=6f23b328e7
.
- Type :これは、コンテナーを複数のエンジンにデプロイする方法を決定します。 この場合、
service
. - ラベル:これは、コンテナーをエンジンに一致させるために使用されます。 エンジンに割り当てたラベルの1つを確認するだけです。
- 再起動ポリシー:これは、エラーまたはDockerの再起動後にコンテナを自動的に再起動するかどうかを決定します。 この場合、そのままにしておきます
no
.
次に、展開をクリックします。 コンテナが起動するまでしばらく時間がかかります。 コンテナリストにリダイレクトされます。このリストには、次の名前のコンテナが含まれているはずです。 mysql-test
(または使用した名前)その中に。
Shipyardを使用して最初のDockerコンテナをデプロイしました。
次に、同じプロセスを使用して、MySQLコンテナにリンクされたWordPressコンテナをデプロイします。 + Deploy ボタンをもう一度クリックして、次のように入力します。
- 画像:
wordpress
- 名前:
wordpress-test
- リンク:
mysql-test:mysql
- タイプ:
service
- ラベル:エンジンに使用したラベルを確認してください。
- ポリシーの再開:これをオンのままにします
no
.
もう1つやるべきことがあります。どこからでもこのWordPressコンテナのWebコンテンツにアクセスできるようにしたいので、そのポートを公開する必要があります。 80
. これを行うには、ポートの見出しの横にあるプラス記号をクリックします。
プロトコルでTCPを選択し、 IP を空白のままにして、1234をポートおよび80と入力します。 ] as ContainerPort。
これで、展開をクリックできます。 もう一度、コンテナリストにリダイレクトされるまでにしばらく時間がかかります。 リストには、という名前のコンテナも表示されます。 wordpress-test
. 詳細を表示するには、その横にあるリンクをクリックしてください。
ポートの下に、WordPressコンテナのポートが表示されます 80
これで、サーバーのポートに公開されます 1234
. Shipyardは、このリストを、公開されたアドレスに移動するために使用できるクリック可能なリンクにするのに役立ちます。
このリンクをクリックしてください。 これにより、WordPressインストールウィザードが表示されます。 そのページのフィールドに入力すると、新しいWordPressブログにログインして、Webサイトとして表示できるようになります。
結論
これで、Shipyardを使用して、Dockerホストに実際のアプリケーションをデプロイすることに成功しました。
サーバー上でShipyardが稼働しています。 また、Dockerを使用して追加のサーバーを構成し、それらをShipyardインスタンスに接続して管理できるようにする必要があります。 また、CLIとGUIを使用してShipyardインスタンスに接続する方法を学び、GUIを使用してDockerホストに新しいコンテナーをデプロイする方法を学びました。
これで、 DockerRegistryで利用可能な何千ものWebアプリケーションを自由に試すことができます。 たとえば、このチュートリアルで説明されているように、Nginxコンテナをデプロイして、新しいWordPressブログをより読みやすいURLでホストできます。