Docker-Compose:Bash命令替换

时间:2015-12-22 10:08:52

标签: bash docker docker-compose

根据博客文章,我正在为应用程序编写docker-compose.yml文件,该应用程序可以从容器内部访问Docker(Docker中的Docker): 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?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

当你打电话给撰写时:

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

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