Мне нужно добавить несколько строк в /etc/sysctl.conf в образе докера. Есть ли идемпотентный способ сделать это через файл докеров вместо редактирования вручную и с использованием подхода фиксации докеров?
Редактирование файлов из dockerfile
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
Можете ли вы также добавить в этот файл переменную среды: - RUN echo $ ENV_VAR1 ›› /etc/sysctl.conf
- person Righto; 10.01.2018
как добавить содержимое с новой строки.
- person kn3l; 21.02.2018
что, если мне нужно написать более одной строки, будет ли писать эхо столько раз - хорошая идея?
- person viveksinghggits; 12.05.2019
это отлично сработало для одной строки, которую мне нужно было добавить. Чтобы добавить новую строку, я просто вставил \ r \ n ... так что в приведенном выше примере будет RUN echo \ r \ nНекоторая строка для добавления в файл ›› /etc/sysctl.conf
- person James Nelli; 08.04.2020
как вы можете использовать это в docker-compose.yml с
command: echo "line" >> /etc/file.conf
?
- person Ing. Michal Hudak; 27.04.2021
А что насчет многострочного?
- 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
Отсутствует закрытие
'
, нет?
- person Benjamin W.; 13.08.2018