【问题标题】:Editing Files from dockerfile从 dockerfile 编辑文件
【发布时间】:2015-02-27 02:02:34
【问题描述】:

我需要在 Docker 映像中向 /etc/sysctl.conf 添加几行。

是否有一种通过Dockerfile 而不是手动编辑并使用docker commit 方法的幂等方式来做到这一点?

【问题讨论】:

标签: docker dockerfile


【解决方案1】:

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

但是,如果您的问题在于简单地设置“咬”this question 可能会有所帮助。

【讨论】:

  • 你能不能也给这个文件添加一个环境变量: - RUN echo $ENV_VAR1 >> /etc/sysctl.conf
  • 如何用换行符追加内容。
  • 如果我必须写多行怎么办,写多少次 echo 是个好主意吗?
  • 这对我需要添加的一行非常有用。要添加新行,我只需输入 \r\n ... 所以上面的示例将是 RUN echo "\r\nSome line to add to a file" >> /etc/sysctl.conf
  • 如何在 docker-compose.yml 中使用 command: echo "line" >> /etc/file.conf
【解决方案2】:

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

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

-i 是 GNU sed 的非标准选项,用于内联编辑(减轻处理临时文件的需要)。

s 是 sed 的替代命令,用于查找和替换

g 表示全局替换,即查找所有出现的 origin text 并使用 sed 替换为 new text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2021-05-07
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多