Docker Composeで起動したコンテナの時刻をコンテナ内で変更する
背景
日付に依存したバッチ処理のテストをするのにDocker Composeで起動したコンテナの時刻をコンテナ内で変更しようとしたら、rootユーザなのに operation not permitted
と表示され変更できませんでした。
原因
DockerはLinux Capabilitiesの仕組みを使って、デフォルトではできることが制限されていました。
https://docs.docker.com/engine/security/security/#/linux-kernel-capabilities
対応
Dockerコンテナ起動時に権限を渡してあげるオプションがありました。
docker run -it --rm --privileged example:image bash
https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities
docker-composeではコンテナの設定に privileged: true
を追加しました。
version: '2' services: sample: image: centos6:centos6 privileged: true