Webアプリ開発者必見!DockerのTips3選 | 千葉で集客ホームページ制作はティーエスフォート
コラム

Webアプリ開発者必見!DockerのTips3選

Webアプリ開発者必見!DockerのTips3選

今回の記事では、Dockerに関するTipsをご紹介します。

Dockerとは、Linuxカーネルの技術を使って仮想化を実現するための技術です。

1.1コンテナ1プロセス

Dockerは基本的に「1コンテナ1プロセス」で動かします。

コンテナとは、プロセスの実行空間を隔離するための技術のことを指します。

Dockerは1コマンドの実行をするための技術で、コンテナのライフサイクルはコマンドが実行されている期間だけです。ライフサイクルというのはコマンドが有効な時間のことです。

例えば以下のコマンドはだいたい6秒間実行されます。
$ docker run ubuntu sleep 6

このようにコンテナは指定したコマンドが実行されている1コマンドだけが実行されるような設計になっています。

コマンドのライフサイクルを把握することは重要です。

2.再起動ポリシー

Dockerには、再起動ポリシーという、コンテナ終了時に再起動するための仕組みが用意されています。

再起動ポリシーを設定しておけば、Dockerデーモンの起動時やホストOSの起動時に自動的にコンテナを開始することができます。

Docker ではこの再起動ポリシーを利用することが推奨されています。 プロセスマネージャーを利用してコンテナを起動することはやめてください。

再起動ポリシーは dockerd コマンドの --live-restore フラグとは異なります。 --live-restore は Docker のアップグレード中にコンテナを起動し続けるものですが、ネットワーク接続やユーザー入力は遮断されます。

docker-composeを利用している場合の自動起動

自動起動を有効化するには、以下のオプションを使います。

restart: always
自動起動を停止するには、「restart: always」を削除するだけでOKです。


version: '2'

services:
wordpress:
image: wordpress:latest
ports:
- "3001:80"
environment:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: mysql_user
WORDPRESS_DB_PASSWORD: mysql_pw
# 自動起動の有効化
restart: always

mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root_pw
MYSQL_DATABASE: wordpress
MYSQL_USER: mysql_user
MYSQL_PASSWORD: mysql_pw
# 自動起動の有効化
restart: always

3.Dockerコンテナのデータの永続化

コンテナがエラーなどの理由で起動しなくなった場合、コンテナ内部のデータは復旧させることが困難となってしまいます。

起動しないコンテナを削除し、再度コンテナを起動してもよいですが、サービス提供環境ではデータが失われてしまうことや、コンテナの起動と再起動による復旧では問題が起こってしまう可能性が高いです。

こうならないように、蓄積したデータを永続的に利用する方法として、Dockerはデータ保管領域をコンテナ内ではなく、Dockerホストのボリューム領域、またはストレージをマウントして使用する機能を提供しています。

1.docker volume createコマンドで、データ保管領域を作成する。
mysql-dataという名前のボリューム領域を、Dockerホストに作成します。

$ docker volume create mysql-data
作成したボリューム領域が、Dockerホストのどのディレクトリーに割り当てられるかについては、docker volume inspectコマンドで確認できます。

$ docker volume inspect mysql-data
[
{
"CreatedAt": "2020-08-26T09:39:17Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/mysql-data/_data",
"Name": "test",
"Options": {},
"Scope": "local"
}
]


2.docker container run コマンドに--volumeオプションを追加し、コンテナのMySQLデータディレクトリーをマウントします。

$ docker run \
--name wordpress-mysql \
--volume mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql \
-d \
mysql

まとめ

今回のコラムでは、Dockerについての以下の3つのTipsをご紹介してきました。

①1コンテナ1プロセス
②再起動ポリシー
③Dockerコンテナのデータの永続化

①ではDockerの基礎概念、②では再起動したときの挙動を明確化、③では使用データを永続的に使用する方法をご紹介しました。

関連記事

ページ先頭へ