【问题标题】:Docker ADD then RUNDocker 添加然后运行
【发布时间】:2014-12-06 05:09:07
【问题描述】:

我正在为我们的 ElasticSearch 服务器的特定实现构建一个 docker 映像。它需要配置文件。在我的 Dockerfile 中,我有以下命令:

 RUN mkdir /elasticsearch/plugins

 ADD plugins/es_plugins.tar /elasticsearch/plugins
 RUN \
      cd /elasticsearch/plugins && \
      tar -xvf es_plugins.tar && \
      rm -f es_plugins.tar

Docker 在 mkdir 和 ADD 上构建成功。但失败并出现 tar 错误“es_plugins.tar:无法打开:没有这样的文件或目录”

这是我第一次接触 Docker。为什么“ADD”显示成功但 RUN 失败的任何想法?

【问题讨论】:

  • 不确定但试试这个ADD plugins/es_plugins.tar /elasticsearch/plugins/plugins.tar
  • 它期望 是一个目录。当我尝试这个时,它创建了一个名为 plugins.tar 的目录
  • 另一个要尝试的是(cd /elasticsearch/plugins ; tar -xvf ./es_plugins.tar )

标签: elasticsearch docker


【解决方案1】:

花了一个小时,但我想出了如何运行我的容器并放入 shell。

似乎当我执行“添加 file.tar /destination/dir”时,它实际上将 tar 中的文件/目录移动到了目标位置。这是我想要的,但我很惊讶。我将不得不做更多的研究。

【讨论】:

  • 如果源是可识别的压缩格式,ADD 指令将提取文件。如果您不希望这种行为,请改用COPY 指令。
  • 该死的,这太不直观了。感谢您的提醒。我永远不会猜到一个名为 ADD 的命令会解压缩档案。我实际上不止一次阅读 TFM 并设法没有注意到这种细微差别。
猜你喜欢
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多