Packer Docker 带有远程 docker 守护程序的生成器

Packer Docker Builder with remote docker daemon

我正在使用加壳器 docker 构建器和 ansible 创建 docker 图像 (https://www.packer.io/docs/builders/docker.html)

我有一台用于 运行 构建脚本的机器(客户端)。加壳器 docker 是用这台机器上的 ansible 执行的。这台机器有 docker 个客户端。它连接到远程 docker 守护进程。环境变量 DOCKER_HOST 设置为指向远程 docker 主机。我能够测试连接性并且一切正常。

现在的问题是,当我执行 packer docker 构建镜像时,它会出错:

   docker: Run command: docker run -v /root/.packer.d/tmp/packer-docker612435850:/packer-files -d -i -t ubuntu:latest /bin/bash
==> docker: Error running container: Docker exited with a non-zero exit status.
==> docker: Stderr: docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
==> docker: See 'docker run --help'.

似乎打包程序 docker 正在查看本地守护进程。

解决方法:我重命名了 docker 二进制文件并引入了一个名为 "docker" 的脚本,该脚本设置 DOCKER_HOST 并调用原始的 docker 二进制文件并传递参数。

有没有更好的方法来处理这个问题?

Packers Docker 构建器不适用于远程主机,因为打包程序使用 /packer-files 卷安装与容器通信。这在文档中含糊地表达为:

The Docker builder must run on a machine that has Docker installed.

并在 Overriding the host directory 中进行了解释。