CodeZine(コードジン)

特集ページ一覧

実用的なDockerイメージを使って便利さを体験しよう

最短で使うDocker⼊⾨ 第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/01/19 11:00

目次

ログを確認する

 連載第1回では、慣例としてログはdocker logsで確認できると説明しました。NextCloudのイメージも例外ではありません。まず、docker psでコンテナのIDを確認します。

$ docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                  NAMES
aeefd14462b4   nextcloud   "/entrypoint.sh apac…"   56 minutes ago   Up 56 minutes   0.0.0.0:8080->80/tcp   unruffled_haibt

 このコンテナID(この例では「aeef…」)に対して、docker logsすれば、ログを確認できます。

$ docker logs
Initializing nextcloud 20.0.3.2 ...
Initializing finished
New nextcloud instance
Installing with SQLite database
starting nextcloud installation
Nextcloud was successfully installed
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Wed Dec 16 15:23:31.184043 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.13 configured -- resuming normal operations
…略…

環境を自動設定する

 さて、このようにしてdocker runしたときは、「管理者のユーザー名」「管理者のパスワード」などが聞かれますが、起動時に、デフォルトの値を指定することもできます。これはドキュメントの「Auto configuration via environment variables」の項に書かれており、「SQLite」「MySQL/MariaDB」「PostreSQL」の別を設定し、さらに管理者のユーザー名と管理者のパスワードをNEXTCLOUD_ADMIN_USERとNEXTCLOUD_ADMIN_PASSWORDという環境変数で指定すれば実現できます。

 環境変数を指定するには、docker runするときに「-eオプション」を使います。例えばデータベースにSQLiteを使い、そのデータベース名をnextclouddbとし、管理者ユーザー名をadmin、管理者パスワードをmypasswordにするなら、次のようにして起動します。

$ docker run -d -p 8080:80 -v /home/data:/var/www/html -e NEXTCLOUD_ADMIN_USER=admin -e NEXTCLOUD_ADMIN_PASSWORD=mypassword -e SQLITE_DATABASE=nextclouddb nextcloud 

 このように起動すると、初期設定をするため、しばらく時間がかかりますが(その間、ブラウザーからの接続確認できません。筆者の環境では数分かかりました)、その後ブラウザーでアクセスすると、次のように初期設定が完了し、ユーザー名やパスワードを入力できる状態から始まります。

 起動完了したかどうかは、docker logsでログを確認することでわかります。ログに「Nextcloud was successfully installed」と表示されれば、初期化が完了し、アクセス可能な状態です。

初期設定が完了した状態で起動した
初期設定が完了した状態で起動した

外部データベースを利用する方法について

 NextCloudイメージは、既定では、内蔵のSQLiteを利用します。これはパフォーマンスがよくないので、実用的に使うのであれば、MySQLもしくはPostgreSQLのデータベースを別途用意して、そこにデータを保存することが推奨されています。

 MySQLもしくはPostgreSQLを使うには、NextCloudとは別に、MySQLやPostgreSQLを用意しておき、そこにアクセスするためのアカウントを初期設定時に設定します(もしくはdocker runする際に、-eオプションを使って、環境変数として指定することも可能です)。MySQLやPostgreSQLは、実機にインストールしたものを使うこともできますし、MySQLやPostgreSQLのコンテナを利用することもできます。ここでは、その方法は説明しませんが、次回以降の連載のなかで紹介する「WordPressを利用する方法」を参考にしてください(WordPressのコンテナは、別に用意したMySQLと接続する必要があります)。

まとめ

 今回は、Dockerイメージを使って実用的なサーバーを構築する最初の例として、NextCloudを取り上げました。NextCloudは、docker runするだけなので簡単です。ポイントは次の通りです。

  1. ポート番号を-pで指定する
  2. 永続化すべき場所を-vで指定する
  3. ログはdocker logsで確認できる
  4. 動作オプションを-eで指定する

 何を指定すべきかはドキュメントに記載されているので、それを参考にします。例えばNextCloudの場合、-eで指定できるオプションとして、ほかにもメールサーバーを指定する環境変数などがあります。

 どのDockerイメージも、簡単なものであれば使い方はほぼ同じです。Docker Hubで興味あるイメージを見つけたら、ぜひいろいろと試してみてください。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:最短で使うDocker入門

著者プロフィール

  • 大澤 文孝(オオサワ フミタカ)

    テクニカル・ライター、プログラマ/システムエンジニア。情報セキュリティスペシャリスト、ネットワークスペシャリスト。入門書からプログラミングの専門書まで幅広く執筆。   主な著作として、「Amazon Web Services 基礎からのネットワーク&am...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5