前置き
Dockerでテスト環境を構築することになったんですが、ひとまずログとコンテンツ(画像)をどうするか迷い、
Volume用コンテナで運用するように対応しました。
Docker Volume
今回は
- ログはリアルタイムで見たい
- 画像は登録されていれば良い
ということで、
- ログは明示的にディレクトリを指定してマウント
- 画像はDocker内部でのみマウント
という感じでVolumeを作成しました。
以下コマンドです。
docker_volume.sh
docker run \
--name docker-volume \
-v /home/logs/apl:/var/log \
-v /usr/local/image \
busybox
上記Volumeを利用する方法はDockerコンテナ起動時に以下のようにVolumeを指定して起動します。
docker_run.sh
docker run \
--volumes-from docker-volume \
--name name \
usr/dockerimage
コマンド説明
コマンドの説明をします。
まず、はdocker_volume.shの説明。
docker_volume.sh
docker run \ #Dockerコンテナ起動
--name docker-volume \ #コンテナ名
-v /home/logs/apl:/var/log \ #Volume指定 Dockerを起動しているサーバのディレクトリ:Docker内のマウントしたいディレクトリ
-v /usr/local/image \ #Docker内のマウントしたいディレクトリ
busybox #Dockerイメージ
今回はbusyboxを利用しています。とても軽量でおすすめです。
3行目がログ用のVolumeで、:の前に設定したコンテナを起動しているサーバのディレクトリでログファイルがリアルタイムで確認できます。
4行目のVolumeは画像用で、アプリケーションで利用できれば良いのでマウントするディレクトリのみ指定しています。
※Volume起動時に自動作成されるディレクトリが有りますので、気になる人は調べてみて下さい。
次はdocker_run.shです。
docker_run.sh
docker run \ #Dockerコンテナ起動
--volumes-from docker-volume \ #利用するDockerVolumeコンテナ名
--name name \ #起動コンテナ名
usr/dockerimage #Dockerイメージ
これは2行目で利用するVolume名を指定しています。
Volume起動時に指定したマウントしたいディレクトリが、自動でマウントされます。
注意点
Volumeコンテナ起動時に指定したディレクトリと、アプリケーションコンテナ内のディレクトリを合わせて下さい。
存在しない場合はエラーになります。