根据博客文章,我正在为应用程序编写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?
答案 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