systemdを実行しているDockerコンテナーがあります。その下のアプリケーションに環境変数を渡したいのですが。
Docker内から(/sbin/init
コマンドラインとして)systemdを起動すると、Dockerは変数をsystemdに公開しますが、子サービスには公開しません。systemd.setenv=...
コマンドラインに追加すると、変数が渡されます。よりクリーンな解決策を探しています。
/sbin/init
開始されたアプリケーションに渡された環境変数を公開するにはどうすればよいですか?
% docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \
-e VAR1=1 motiejus/systemd_fedora20 \
init systemd.setenv=VAR2=2
...
Welcome to Fedora 20 (Heisenbug)!
...
[ OK ] Reached target Multi-User System.
[root@740690365eb0 ~]# env | grep VAR
VAR2=2
VAR1=1
コマンドの実行中に表示されることを期待しています。
言い換えれば、systemdはそれに渡された変数を、それが開始する子に渡すことができますか?
Dockerfileについては、githubリポジトリを参照してください。