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