Editing Files from dockerfile

DockerDockerfile

Docker Problem Overview


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?

Docker Solutions


Solution 1 - Docker

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.

Solution 2 - Docker

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMyles McDonnellView Question on Stackoverflow
Solution 1 - DockerwassgrenView Answer on Stackoverflow
Solution 2 - DockercreackView Answer on Stackoverflow