我需要向Docker图像中的/etc/sysctl.conf添加几行。有没有一种幂等的方法可以通过Dockerfile而不是手动编辑和使用docker commit方法来完成此操作?
/etc/sysctl.conf
Dockerfile
docker commit
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
然而,如果您的问题在于简单地让设置“咬”这个问题可能会有帮助。
sf6xfgos2#
sed可以很好地替换内容,如果需要追加,可以使用双重定向
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
-i
s
g
origin text
new text
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
如果要展开变量,请使用双引号。
3条答案
按热度按时间3htmauhk1#
我将在
Dockerfile
中使用以下方法如果你想 * 替换 * 一些字符或类似的字符,你可以使用sed来解决这个问题,例如:
然而,如果您的问题在于简单地让设置“咬”这个问题可能会有帮助。
sf6xfgos2#
sed
可以很好地替换内容,如果需要追加,可以使用双重定向-i
是GNU sed的一个非标准选项,用于 inline 编辑(减少处理临时文件的需要)。s
是sed用于查找和替换的替代命令g
表示全局替换,即使用sed查找所有出现的origin text
并替换为new text
yebdmbv43#
为了补充已经解释了如何附加单行的答案,可以向文件附加多行,如下所示:
如果要展开变量,请使用双引号。