web-dev-qa-db-ja.com

dockerfileからファイルを編集する

Dockerイメージの/etc/sysctl.confにいくつかの行を追加する必要があります。手動で編集してdocker commitアプローチを使用するのではなく、dockerfileを介してこれを行うべき等べき方法はありますか?

41
Myles McDonnell

Dockerfileで次のアプローチを使用します

RUN   echo "Some line to add to a file" >> /etc/sysctl.conf

これでうまくいくはずです。いくつかの文字などをreplaceしたい場合は、sedを使用して、たとえば以下:

RUN   sed -i "s|some-original-string|the-new-string |g" /etc/sysctl.conf

ただし、問題が単に設定を「噛む」だけにある場合は、 この質問 が役立つかもしれません。

79
wassgren

sedは非常にうまく機能し、追加する必要がある場合は、二重リダイレクトを使用できます

sed -i 's/Origin text/new text/' /etc/sysctl.conf
bash -c 'echo hello world' >> /etc/sysctl.conf

-iは、GNU インライン編集用のsed(一時ファイルを扱う必要性を軽減する)の非標準オプションです。

9
creack