Docker-Compose: Bash 命令替换

Docker-Compose: Bash command substitution

我正在为应用程序编写 docker-compose.yml 文件,根据博客 post 这里: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

问题是我需要附加主机 Docker 二进制文件,但我不知道 docker 在目标系统上的确切路径,在某些系统上它可能是 /bin/docker,在其他 - /usr/local/bin/docker,等

我想要跨平台解决方案,就放这样的东西

volumes:
  - $(which docker):/bin/docker

进入docker-compose.yml.

Docker-Compose 可以吗?

挂载 Docker 二进制文件实际上不是一个好主意,因为较新的版本具有动态二进制文件,因此您还需要发现并挂载所有必需的库。

相反,正如 Oliver 所建议的,直接在容器内安装 Docker 并将其指向主机上的套接字要容易得多。请注意,如果主机和容器中的 Docker 版本不同,您可能会遇到问题。

然而,要回答这个问题,您可以在较新版本的 Compose 中使用 shell 环境变量。在您的 Dockerfile 中,您可以执行以下操作:

volumes:
  - ${DOCKER_PATH}:/bin/docker

当你调用 compose 时:

DOCKER_PATH="$(which docker)" && docker-compose up

这里有完整的文档https://docs.docker.com/compose/compose-file/#variable-substitution