Edited at

dockerでLD_PRELOADでライブラリを複数設定する

More than 3 years have passed since last update.


問題

普通のコマンドラインからLD_PRELOADを指定する場合

LD_PRELOAD="foo.so bar.so" baz 

とするが、dockerでこれを真似して

docker run --rm -e LD_PRELOAD="foo.so bar.so" ... 

とすると

Unable to find image 'bar.so":latest' locally

FATA[0000] Invalid namespace name (), only [a-z0-9_] are allowed, size between 4 and 30

のように言われる。どうもイメージ名だと思っているみたいで、コマンドライン引数のパーサーのバグみたいに見えるが、まあ今のところそんなふうである。


解決法

http://man7.org/linux/man-pages/man8/ld.so.8.html

The items of the list can be separated by spaces or colons.

とあるので

docker run --rm -e LD_PRELOAD=foo.so:bar.so ...

のようにすれば良い。