Bindマウント

--mount type=bind

データの永続化などはVolumeマウントを使うようにし、以下のような場合はBindマウント。

ソースとなるディレクトリはsource=フルパス指定(存在しないとエラー)。ターゲットはdestination=で指定。読込専用ならreadonly

複数のオプション(キーと値)は、--mount type=mount,キー1=値,キー2=値のように、,区切りで指定する。


設定ファイルの共有

事前にホストで設定ファイルなどを作成しておき、コンテナ起動でシェアする例として、httpd:2.4イメージを使う。

以下では、Webコンテンツを入れたホストのhtdocs/を、コンテナの/usr/local/apache2/htdocs/に読込専用でBindマウント。

# シェアするディレクトリ、ファイル
mkdir htdocs
echo 'Hello, bindマウント!' > htdocs/index.html

# フルパス表現のため、"$PWD"を使う
# --publish: ホストポート80をコンテナポート80につなぐ
# コンテナはバックグラウンド・モード、httpdはフォアグラウンド実行
docker run --rm -dit --name test --publish 80:80 \
  --mount type=bind,source="$PWD"/htdocs,destination=/usr/local/apache2/htdocs,readonly \
  httpd:2.4 httpd -D FOREGROUND

# アクセス確認
curl localhost
Hello, bindマウント!

# 読込専用のため、コンテナからはtouchできない
docker exec -it test touch /usr/local/apache2/htdocs/index.html
touch: cannot touch '/usr/local/apache2/htdocs/index.html': Read-only file system

# コンテナ停止・削除
docker stop test