LoginSignup
9
6

More than 3 years have passed since last update.

DockerのインストールとWordPressの起動 - さくらのクラウド超入門・サーバ編(3)

Last updated at Posted at 2020-03-10

概要

前回はサーバの安全性を高めるため TCP Wrapper で SSH のアクセス制限 をしました。次は、クラウドを使ってインフラ(IaaS)の操作を行う前段階(の続き)です。

実際のアプリケーション動作環境を想像しやすいように、開発環境から整えます。コンテナを使った開発・実行環境である Docker をセットアップし、WordPress (PHP+MySQL)のコンテナを Docker Compose で実行する手順と、サーバに対する電源操作手順を学びます。

解説

アプリケーション開発と操作を簡単にする Docker とは?

Docker 普及前後で、サーバを準備した後の環境構築方法が大きく変わりました。Apache(アパッチ) や PHP(ピーエイチピー) などウェブサーバや言語開発環境を整える前に、今は「Docker」(ドッカー)をセットアップする方法があります。Docker があれば、yum (ヤム)や apt (アプト)を使わなくても、1つのホスト上で複数のサーバ機能や開発言語の環境を同居できます。 Docker についての詳細は、 こちらのスライド資料をご覧ください

Docker は、アプリケーションを簡単迅速に開発・移動・実行するためのプラットフォーム(プログラム群)です。Docker Engine(エンジン)というプログラムを通して、アプリケーションをコンテナ(と呼ばれる、名前空間やリソースを分離する技術の組み合わせた、プロセス間の隔離という「特別な状態」)として操作できます。Docker は 2013 年に dotCloud, Inc.(当時のドットクラウド社、現在 はDocker, Inc.)によってオープンソースとして公開されており、誰でも自由に使えます。

image.png

Docker でコンテナを操作するには Docker Engine をセットアップする必要があります。セットアップ後は docker コマンドを使うだけで、コンテナ化したアプリケーションを操作できます。

Docker のインストール用スクリプトの利用

CentOS 7 での Docker インストールは、 [get.docker.com])(https://get.docker.com) で配布されているインストール用スクリプトの利用が便利です。覚えておくのは get.docker.com というホスト名のみ。これをブラウザで開くと、インストール用スクリプトが表示されていて、さらに中にインストール用のコマンドも書かれています。

image.png

Docker Engine の正確な手順は、 パッケージ等のセットアップ が必要です。本番向けではないテストや検証用途であれば、Docker Engine のリポジトリと常に最新安定版の Docker Engine をセットアップする方法が簡単です(逆に言いますと、インストールする時点で Docker のバージョンが変わってしまうため、本番環境での利用は推奨されていません)。

インストールするには、サーバにログイン後、以下のコマンドを実行します。

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

コマンド実行直後は 20 秒間の待機時間です。その段階で Ctrl+C をキー入力するとインストールを中断できます。進行後は、セットアップが完了するまで待ちます。

セットアップが終わったら、Docker Engine デーモン(dockerd)の起動と、サーバ起動時に自動起動するコマンドを実行します。

systemctl start docker
systemctl enable docker

それから、 docker version コマンドを実行し、Docker のバージョン情報に Engine: の項目が出るかどうかを確認します。もし Engine の項目が表示されず Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? が出る場合、Docker のセットアップが完了していない可能性があります。あるいは、 Docker Engine が停止している場合は、起動します。

以上で Docker のセットアップ作業は完了です。

Docker で Nginx を動かす

Nginx コンテナを起動して、ウェブサーバが表示できるかどうか確認しましょう。

次のコマンドは nginx:alpine という Nginx が Alpine Linux (アルパイン・リナックス)上で動作する小さな Docker イメージを使い、 --detach (デタッチ)モードというバックグラウンドでコンテナを実行し、かつ、 --publish 8080:80 でホスト側ポート 8080 をコンテナ内のポート 80 に割り当て(マッピング)し、 --name でコンテナ名を mynginx とします。

docker run --detach --publish 8080:80 --name mynginx nginx:alpine

それから docker ps コマンドを実行すると、 mynginx という名前でコンテナが実行中( StatusUp )になっているのがわかります。

この状態で、ウェブブラウザを使い、 http://<サーバのIPアドレス>:8080 を実行します。次のような「Welcome to nginx!」(nginxへようこそ!)と表示されれば正常です。
image.png

実行しおわった後の nginx コンテナは停止・削除します。

docker kill mynginx
docker rm mynginx

Docker Compose のインストール

WordPress (ワードプレス)のようなアプリケーションは、複数のプログラムが動作します。複数のコンテナを扱うには、Docker Engine を単体で使うのよりも、Docker Compose(コンポーズ)という名前のツールと一緒に使うのが便利です。コンテナに関する情報などを YAML (ヤムル)ファイルに記述しておきます。

Docker Compose をインストールした環境であれば、コマンド docker-compose up を実行するだけで、複数のプログラムを同時に制御できます。

image.png

Docker Compose のインストール方法は複数ありますが、ここでは yum を使ってパッケージをインストールします。

yum -y install docker-compose

インストール後は、次のようにして、バージョン情報が表示されるかどうかを確認しましょう。

# docker-compose  version
docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017

Docker Compose で WordPress を動かす

Docker Compose でプログラムを動かすには、まず作業用のディレクトリを作成し、移動します。ここでは mywp をいう名前のディレクトリを作成して移動します。

mkdir mywp
cd mywp

それから、 vi docker-compose.yaml などを実行し、同じディレクトリ内に YAML ファイルを作成します。内容は以下の通りにします( 参考: Docker Hub の wordpress イメージのドキュメント(英語) )。

または、

curl https://gist.githubusercontent.com/zembutsu/e46c2a8f2ebb2ef4347a39914ba8e145/raw/9283112c756b7dfdc8066ca456b9adc4d987d909/docker-compose.yaml -o docker-compose.yaml

を実行して、 docker-compose.yaml を作成します。

yaml
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

ここまで準備すると、同じディレクトリ内に docker-compose.yaml が出来ています。その状態で、次のコマンドを実行し、 Docker イメージのダウンロード(pull) と、Docker Compose のサービスとして複数のコンテナを同時実行します。

docker-compose pull
docker-compose up -d

そして、 docker-compose ps コマンドを実行し、2つのコンテナ( mywp_wordpress_1mywp_db_1)の StateUp になっているのを確認します。

# docker-compose ps
      Name                    Command               State          Ports
-------------------------------------------------------------------------------
mywp_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
mywp_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp

今度はウェブブラウザで http://<サーバのIPアドレス> を実行します。今回の docker-compose.yaml の設定では、WordPress の wordpress コンテナを、ホスト側のポート 80 に割り当て(マッピング)するようにしました。そのため、ポート番号の入力は不要です(ウェブブラウザは、デフォルトのポート 80 を自動的に表示します)。

image.png

この図のように、WordPress 初期画面が表示されたら、初期設定をしてみましょう。

  1. 言語一覧では「日本語」を探し、「続ける」をクリックします。
  2. 次の画面では必要情報を入力の上「WordPressをインストール」をクリックします。

image.png

さらに次の画面では「ログイン」をクリックします。

image.png

そして、ユーザ名とパスワードを入力して「ログイン」しましょう。WordPress の管理画面にログインできたら、サイト名を確認したり、投稿したり、操作してみましょう。

また、 http://<サーバのIPアドレス> を実行し、 WordPress のコンテンツが表示されるのも確認しましょう。

image.png

以上で Docker Compose を使った WordPress のセットアップが完了しました。

サーバ電源操作と WordPress の動作確認

あとは、サーバが再起動しても表示されるかどうか、仮想マシンの停止・再起動を行い確認します。

さくらのクラウドのコントロールパネルを、ウェブブラウザで開き、「サーバ」一覧で対象サーバの情報を確認します。それから「サーバの行」をクリックして、行頭にあるチェックボックスに印を入れ、「電源操作」→「シャットダウン」をクリックします。

image.png

確認画面が表示されますので、作業対象のサーバが違っていないのを確認し、「シャットダウン」をクリックします。

image.png

操作確認ダイアログでは「実行」をクリックします。

image.png

そうすると、シャットダウン(停止)命令がサーバに対して送られます。ステータスが「成功」になるまで待ってから、次の確認画面は「閉じる」をクリックします。

image.png

そのままお待ちいただくと、サーバの状態を表す「緑色」のステータス(起動)が、「赤色」(準備中)から「灰色」(停止)に変わります。もし変わらなければ、コントロールパネル上の再読込ボタンをクリックします。

停止後は、再び起動しましょう。再びサーバをクリックしてチェックを入れ、「電源操作」→「起動」をクリックします。

image.png

対象のサーバを確認し、「起動」ボタンをクリックします。

あとは、確認ダイアログでは「実行」をクリックし、次の画面ではステータスが「成功」になってから「閉じる」をクリックします。しばらく待ち、サーバが起動状態になれば SSH の接続も出来ますし、WordPress も自動的に起動します。

ブラウザから http://<サーバのIPアドレス> を開き、 WordPress のサイトが表示できるかどうか確認します。

振り返り

Docker でコンテナを実行するには、Docker Engineのセットアップが必須です。 get.docker.com のセットアップ用スクリプトを使って手軽にセットアップし、Nginx ウェブサーバをコンテナで起動しました。 また、複数のコンテナを簡単に扱うためには、Docker Compose が便利であり、WordPress アプリケーションを Docker Compose で実行しました。あわせて、サーバの電源操作の仕方も学びました。

次回以降は、ここで作成した環境を使って、サーバのコピー方法やディスクの操作方法、クローンの作成の仕方を学びます。

参考情報

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6