簡易データベースサーバーをコンテナーに構築する

更新 -

MariaDB を使用して、その他のアプリケーションからアクセスできるコンテナーに基本的なデータベースを設定できます。このガイドでは以下の手順について説明します。

  • docker フォーマットのコンテナーに MariaDB データベースサーバーを構築する
  • ホストのポート 3306 でサービスを公開する
  • データベースサービスを起動して情報を共有する
  • Web サーバーからデータベースをクエリーするためのスクリプトを実行できるようにする (こちらから入手できる追加 Web サーバーコンテナーが必要です)
  • このコンテナーを使用し拡張するためのヒント

MariaDB データベースサーバーコンテナーを作成し実行する

  1. システムをインストールする。docker パッケージを含む Red Hat Enterprise Linux 7 または Red Hat Enterprise Linux Atomic Host システムをインストールし、docker サービスを起動します。詳細は Get Started with Docker Containers を参照してください。

  2. イメージを取得する。以下のコマンドを実行して rhel7 イメージを取得します。

    # docker pull rhel7:latest
    
  3. サポートファイルが含まれる tarball を取得する。このガイドに添付されている tarball ファイル (mariadb_cont*.tgz) をダウンロードします。新しい mydbcontainer ディレクトリーにダウンロードして、以下のように tar を展開してください。

    # mkdir ~/mydbcontainer
    # cp mariadb_cont*.tgz ~/mydbcontainer
    # cd ~/mydbcontainer
    # tar xvf mariadb_cont*.tgz
    gss_db.sql
    Dockerfile
    
  4. Dockerfile を確認する。必要に応じて ~/mydbcontainer ディレクトリーにある Dockerfile ファイルを編集します (変更が必要なのはおそらく Maintainer_Name のみ)。以下は、そのファイルの内容です。

    # Database container with simple data for a Web application
    # Using RHEL 7 base image and MariahDB database
    # Version 1
    
    # Pull the rhel image from the local repository
    FROM rhel7:latest
    USER root
    
    MAINTAINER Maintainer_Name
    
    # Update image
    RUN yum update -y
    
    # Add Mariahdb software
    RUN yum -y install mariadb-server
    
    # Set up Mariahdb database
    ADD gss_db.sql /tmp/gss_db.sql
    RUN /usr/libexec/mariadb-prepare-db-dir
    RUN /usr/bin/mysqld_safe --basedir=/usr & \
        sleep 10s && \
     /usr/bin/mysqladmin -u root password 'redhat' && \
        mysql --user=root --password=redhat < /tmp/gss_db.sql && \
        mysqladmin shutdown --password=redhat
    
    # Expose Mysql port 3306
    EXPOSE 3306
    
    # Start the service
    CMD ["--basedir=/usr"]
    ENTRYPOINT ["/usr/bin/mysqld_safe"]
    
  5. データベースサーバーコンテナーを構築する。Dockerfile ファイルとその他のコンテンツを含むディレクトリーで、以下のコマンドを実行します。

    # docker build -t dbforweb .
    Sending build context to Docker daemon 528.4 kB
    Sending build context to Docker daemon
    Step 0 :FROM rhel7:latest
     ---> bef54b8f8a2f
    Step 1 :USER root
    ...
    
  6. データベースサーバーコンテナーを起動する。コンテナーイメージを起動するには、以下のコマンドを実行します。

    # docker run -d -p 3306:3306 --name=mydbforweb dbforweb
    
  7. データベースサーバーコンテナーをテストする。たとえば、ホストの docker0 インターフェイスが 172.17.42.1 の場合は、以下のように nc (RHEL 7 の場合は yum install nc) を実行して、データベースコンテナーが稼動していることを確認します。

    # nc -v 172.17.42.1 3306
    Ncat:Version 6.40 ( http://nmap.org/ncat )
    Ncat:Connected to 172.17.42.1:3306.
    R
    5.5.40-MariaDB?acL3YF31?X?FWbiiTIO2Kd6mysql_native_password Ctrl-C
    

コンテナーを使用するためのヒント

ここでは、Web サーバーコンテナーを使用するためのヒントを紹介します。

  • 独自のデータベースを追加する。データベースファイルをビルドディレクトリーにコピーし、データベース名を、gss_db.sql からお使いのデータベースの名前に変更すると、独自の MariaDB コンテンツを (Dockerfile ファイルの複数の場所に) 追加できます。

  • コンテナーを編成する。その他のコンテナーと一緒にこのコンテナーを管理するには、Kubernetes を使用してポッドに編成することが推奨されます。Kubernetes を使用してコンテナーを編成する方法については Get Started Orchestrating Docker Containers with Kubernetes を参照してください。

Attachments