如何在Docker Compose中添加$(...):$(...)

时间:2016-11-25 22:59:05

标签: docker docker-compose dockerfile

我需要在docker-compose中运行以下命令:

- '/var/run/docker.sock:/var/run/docker.sock'
- '$(which docker):$(which docker)'

我找到了这种格式的解决方案:

- ${DOCKER_PATH}:/usr/bin/docker:ro

但在我的情况下,我需要运行这种格式$(..):$(..),

Docker是否有任何简单的解决方案 - 组合它解决问题?

我试过了:

DOCKER_PATH=$(which docker) docker-compose up

volumes:
   - '/var/run/docker.sock:/var/run/docker.sock'
   - ${DOCKER_PATH}:/usr/bin/docker:ro

但我得到错误:

ERROR: Invalid bind mount spec "59f5e4fa06257c16a046ae7e5163401349f1c0bb394c881bcdf557a2f544811c:$(which:rw": Invalid volume destination path: '$(which' mount path must be absolute.

1 个答案:

答案 0 :(得分:1)

以下不起作用

DOCKER_PATH=$(which docker) docker-compose up

volumes:
   - '/var/run/docker.sock:/var/run/docker.sock'
   - ${DOCKER_PATH}:/usr/bin/docker:ro

因为变量替换需要在双引号内(单引号不起作用),所以

- "${DOCKER_PATH}:/usr/bin/docker:ro"

您可以在此处详细了解:https://docs.docker.com/compose/compose-file/#variable-substitution