Docker-Compose:Bash命令replace

我正在写Docker docker-compose.yml文件的应用程序,应该有权访问来自容器内的Docker(Docker在Docker中)根据博客文章: https : //jpetazzo.github.io/2015/09/03/do-不使用-泊坞窗-在-泊坞窗换CI /

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

我想要有跨平台的解决scheme,只是把这样的东西

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

进入docker-compose.yml

Docker-Compose有可能吗?

因为新版本具有dynamic二进制文件,所以装载Docker二进制文件实际上是一个糟糕的主意,因此您还需要发现并装载所有必需的库。

相反,正如Oliver所build议的那样,将Docker直接安装在容器中并将其指向主机上的套接字将会更容易。 请注意,如果主机和容器上有不同版本的Docker,则可能会遇到问题。

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

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

而当你打电话撰写:

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

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