Docker-Compose: Bash 命令替换
Docker-Compose: Bash command substitution
我正在为应用程序编写 docker-compose.yml
文件,根据博客 post 这里:
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 可以吗?
挂载 Docker 二进制文件实际上不是一个好主意,因为较新的版本具有动态二进制文件,因此您还需要发现并挂载所有必需的库。
相反,正如 Oliver 所建议的,直接在容器内安装 Docker 并将其指向主机上的套接字要容易得多。请注意,如果主机和容器中的 Docker 版本不同,您可能会遇到问题。
然而,要回答这个问题,您可以在较新版本的 Compose 中使用 shell 环境变量。在您的 Dockerfile
中,您可以执行以下操作:
volumes:
- ${DOCKER_PATH}:/bin/docker
当你调用 compose 时:
DOCKER_PATH="$(which docker)" && docker-compose up
这里有完整的文档https://docs.docker.com/compose/compose-file/#variable-substitution
我正在为应用程序编写 docker-compose.yml
文件,根据博客 post 这里:
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 可以吗?
挂载 Docker 二进制文件实际上不是一个好主意,因为较新的版本具有动态二进制文件,因此您还需要发现并挂载所有必需的库。
相反,正如 Oliver 所建议的,直接在容器内安装 Docker 并将其指向主机上的套接字要容易得多。请注意,如果主机和容器中的 Docker 版本不同,您可能会遇到问题。
然而,要回答这个问题,您可以在较新版本的 Compose 中使用 shell 环境变量。在您的 Dockerfile
中,您可以执行以下操作:
volumes:
- ${DOCKER_PATH}:/bin/docker
当你调用 compose 时:
DOCKER_PATH="$(which docker)" && docker-compose up
这里有完整的文档https://docs.docker.com/compose/compose-file/#variable-substitution