Редактирование файлов из dockerfile

Мне нужно добавить несколько строк в /etc/sysctl.conf в образе докера. Есть ли идемпотентный способ сделать это через файл докеров вместо редактирования вручную и с использованием подхода фиксации докеров?


person Myles McDonnell    schedule 30.12.2014    source источник
comment
Кто-то уже запросил это: github.com/moby/moby/issues/12193   -  person Augustin Riedinger    schedule 28.11.2017


Ответы (2)


Я бы использовал следующий подход в Dockerfile

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

Это должно делать свое дело. Если вы хотите заменить некоторые символы или аналогичные, вы можете решить эту проблему с помощью sed, например, следующее:

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

Однако, если ваша проблема заключается в том, чтобы просто заставить настройки «кусать» этот вопрос может помочь.

person wassgren    schedule 30.12.2014
comment
Можете ли вы также добавить в этот файл переменную среды: - RUN echo $ ENV_VAR1 ›› /etc/sysctl.conf - person Righto; 10.01.2018
comment
как добавить содержимое с новой строки. - person kn3l; 21.02.2018
comment
что, если мне нужно написать более одной строки, будет ли писать эхо столько раз - хорошая идея? - person viveksinghggits; 12.05.2019
comment
это отлично сработало для одной строки, которую мне нужно было добавить. Чтобы добавить новую строку, я просто вставил \ r \ n ... так что в приведенном выше примере будет RUN echo \ r \ nНекоторая строка для добавления в файл ›› /etc/sysctl.conf - person James Nelli; 08.04.2020
comment
как вы можете использовать это в docker-compose.yml с command: echo "line" >> /etc/file.conf? - person Ing. Michal Hudak; 27.04.2021
comment
А что насчет многострочного? - person Ken Ingram; 30.04.2021

sed работает довольно хорошо, чтобы заменить материал, если вам нужно добавить, вы можете дважды перенаправить пользователя

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

-i - нестандартная опция GNU sed для встроенного редактирования (устраняет необходимость работы с временными файлами).

person creack    schedule 30.12.2014
comment
Отсутствует закрытие ', нет? - person Benjamin W.; 13.08.2018