I need to add several lines to /etc/sysctl.conf in a Docker image.
Is there an idempotent way to do this via a Dockerfile rather than editing manually and using the docker commit approach?
In many scenarios, users need to edit these images to suit their needs. For customizing or tweaking a docker image to specific requirements, we edit this docker image. But Docker has a drawback that an image cannot be directly edited or modified.
I would use the following approach in the Dockerfile
RUN echo "Some line to add to a file" >> /etc/sysctl.conf That should do the trick. If you wish to replace some characters or similar you can work this out with sed by using e.g. the following:
RUN sed -i "s|some-original-string|the-new-string |g" /etc/sysctl.conf However, if your problem lies in simply getting the settings to "bite" this question might be of help.
sed work pretty well to replace stuff, if you need to append, you can user double redirect
sed -i 's/origin text/new text/g' /etc/sysctl.conf bash -c 'echo hello world' >> /etc/sysctl.conf -i is a non-standard option of GNU sed for inline editing (alleviating the need for dealing with temporary files).
The s is the substitute command of sed for find and replace
The g means global replace i.e. find all occurrences of origin text and replace with new text using sed
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With