【问题标题】:Ansible docker module missing CP command?Ansible docker模块缺少CP命令?
【发布时间】:2015-08-17 06:56:41
【问题描述】:

docker 客户端提供了 cp 子命令,如 here 所述,当需要将文件复制到容器中时非常方便(注意:这有点类似于 Dockerfile ADD 指令在图像构建中)。在 Docker 1.8 中,cp 命令甚至被扩展了一点。

但是,阅读Ansible docker module documentation,似乎缺少这个?这是我的两个问题:

  1. 我是否误解了 Ansible 文档?
  2. 如果 Ansible 缺少 cp,有没有人找到解决方法?我可以想到使用 Ansible copy module 先将文件传输到远程机器,然后使用 cp 在那里运行本机 docker 客户端,但最好是 Ansible 的 docker 模块作为 docker 模块的一部分,会一次性完成吗?

提前致谢。

【问题讨论】:

    标签: docker ansible cp docker-cp


    【解决方案1】:

    你也可以使用同步命令~这个链接提供的例子:

    http://opensolitude.com/2015/05/26/building-docker-images-with-ansible.html

    【讨论】:

    • 感谢您指向“同步”。这听起来比我建议的解决方法中使用“复制”要好。我向 ansible 提出了扩展 docket 模块的请求,但目前这是我们拥有的最好的......
    【解决方案2】:
    1. 你没有。 Ansible 的 docker 模块不支持从容器中复制文件或文件夹。
    2. 没有简单的方法可以做到这一点。我的意思是你需要一个黑客。在我的脑海中,您可以使用 docker cp 选项的“-”参数。

    但是,从我的角度来看,如果您希望将某些内容复制到容器中,那么您可能做错了什么。容器应该是短暂的。

    【讨论】:

    • 将文件复制进出容器有很多正当的理由,这就是为什么 docker 本身具有该功能并正在对其进行扩展。
    • 可能,但是根据我的经验,这种情况意味着设计不佳
    • 同意糟糕的设计,但最有用的相关案例是使用 ansible 将文件复制到名为 volume 的 docker 中。
    • 我不同意它绝对意味着糟糕的设计。例如,我在容器中使用 NiFi,需要将 DB 驱动程序(SAP ASE)复制到那里。我可以安装,但感觉更难看。
    【解决方案3】:

    使用 ansible shell 模块有帮助:

      - name: copy db dump to localhost
        ansible.builtin.shell: docker cp container:/tmp/dump.sql /tmp/dump.sql
    

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 2019-08-13
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 2014-09-01
      • 2017-11-30
      相关资源
      最近更新 更多