从dockerfile编辑文件

h7wcgrx3  于 2023-03-17  发布在  Docker
关注(0)|答案(3)|浏览(175)

我需要向Docker图像中的/etc/sysctl.conf添加几行。
有没有一种幂等的方法可以通过Dockerfile而不是手动编辑和使用docker commit方法来完成此操作?

3htmauhk

3htmauhk1#

我将在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

然而,如果您的问题在于简单地让设置“咬”这个问题可能会有帮助。

sf6xfgos

sf6xfgos2#

sed可以很好地替换内容,如果需要追加,可以使用双重定向

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

-i是GNU sed的一个非标准选项,用于 inline 编辑(减少处理临时文件的需要)。
s是sed用于查找和替换的替代命令
g表示全局替换,即使用sed查找所有出现的origin text并替换为new text

yebdmbv4

yebdmbv43#

为了补充已经解释了如何附加单行的答案,可以向文件附加多行,如下所示:

RUN echo -e '\
Hello World!\n\
This is an example on how to\n\
append multiple lines to a file from within a Dockerfile.'\
>> /etc/sysctl.conf

如果要展开变量,请使用双引号。

相关问题