我在安装了Jenkins
的Docker
容器内运行了docker.sock
。我可以从此容器调用docker-compose
在主机上运行服务吗?我尝试从容器内执行安装脚本,但一直在说
"no such file or directory".
docker exec jenkins curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
docker exec jenkins chmod +x /usr/local/bin/docker-compose
最佳答案
这是可以实现的,但要使其正确就很难。
您需要使用Docker卷安装docker-compose.yml文件在docker主机上的路径,到达容器中相同的位置。
因此,如果docker-compose.yml文件位置在docker主机上为/home/leonid/workspace/project1/docker-compose.yml
,则需要为jenkins容器添加卷-v /home/leonid/workspace/project1/:/home/leonid/workspace/project1/
。
然后,在您的 Jenkins 工作中:
cd /home/leonid/workspace/project1/
docker-compose up -d
为什么?
请记住,docker-compose会向docker引擎提供指令。 docker引擎在docker主机上运行(而不是在Jenkins容器中)。因此,docker-compose给docker引擎的任何路径都必须存在于docker主机上。
关于docker - 从Docker容器运行docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55089996/