docker build
これが一番正当な方法。Dockerfileを用意して、
ADD <src> <dest>
と書いてdocker build
すれば追加される。
ベースイメージを作るのはこれで問題ないけど、ベースイメージから派生してちょっとだけ違うイメージつくりたい場合とかにいちいちDockerfile用意するの面倒なので他に方法がないか調べてみた。
docker run + 標準入力
docker run
で標準入力経由で追加する方法がある。
$ cat file | docker run -i IMAGE /bin/bash -c "cat - > /path"
ディレクトリの場合はtarで固めて渡せばよさげ。
$ tar c dir | docker run -i IMAGE /bin/bash -c "tar -xC /"
dokkuとかでやってた。
docker insert
docker insert
というコマンドがあって
$ docker insert IMAGE URL PATH
という感じでhttp経由でイメージにファイルを追加できるんだけど、この機能は0.10.0でDeprecatedになってる。
Deprecate 'docker insert' by shykes · Pull Request #5005 · dotcloud/docker
docker build
とADD
使えとのこと。
ちなみにこのdocker insert
にローカルのファイルを追加できるようにするという議論や実装もあったみたいだけど、docker insert
自体がなくなったために闇に葬り去られたようである。