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

我需要在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.

最佳答案 以下不起作用

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

点赞