从docker容器运行docker compose
我让从docker容器运行docker compose,docker,jenkins,docker-compose,Docker,Jenkins,Docker Compose,我让Jenkins在Docker容器中运行,并安装了Docker.sock。我可以从此容器调用docker compose,在主机上运行服务吗?我尝试从容器中执行安装脚本,但它一直在说 “没有这样的文件或目录” 这是可以实现的,但要做到正确却很难 您需要使用docker卷将docker-compose.yml文件在docker主机上的路径装载到容器中的同一位置 因此,如果docker-compose.yml文件位置是docker主机上的/home/leonid/workspace/project
Jenkins
在Docker
容器中运行,并安装了Docker.sock
。我可以从此容器调用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/
然后,在詹金斯的工作中:
cd/home/leonid/workspace/project1/
docker compose up-d
这是为什么?
请记住,docker compose为docker引擎提供指示。docker引擎在docker主机上运行(而不是在Jenkins容器中)。因此docker compose为docker引擎提供的任何路径都必须存在于docker主机上。这是可以实现的,但要想正确实现它很困难 您需要使用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/
然后,在詹金斯的工作中:
cd/home/leonid/workspace/project1/
docker compose up-d
这是为什么?
请记住,docker compose为docker引擎提供指示。docker引擎在docker主机上运行(而不是在Jenkins容器中)。因此,docker compose为docker引擎提供的任何路径都必须存在于docker主机上。根据用于生成的映像创建自己的docker文件(可能是docker:latest) 然后,在运行行中下载docker compose并将其设置为可执行文件 启动jenkins代理,从您的映像而不是默认映像构建 您需要在构建容器上安装docker compose,而不是在jenkins master上 对于gitlab ci中的构建,我有一个基于docker映像的特殊构建容器,另外还安装了compose。我认为这是您的情况-您正在使用jenkins基于docker:latest旋转一个容器,默认情况下没有docker compose。您需要从docker:latest创建自己的映像,安装compose或使用docekrhub中的某些映像,就像这样完成
此外,您可以尝试将compose作为构建的一部分安装。只需将其下载到某个本地目录并从那里使用即可。根据您用于构建的映像创建您自己的docker文件(可能是docker:latest) 然后,在运行行中下载docker compose并将其设置为可执行文件 启动jenkins代理,从您的映像而不是默认映像构建 您需要在构建容器上安装docker compose,而不是在jenkins master上 对于gitlab ci中的构建,我有一个基于docker映像的特殊构建容器,另外还安装了compose。我认为这是您的情况-您正在使用jenkins基于docker:latest旋转一个容器,默认情况下没有docker compose。您需要从docker:latest创建自己的映像,安装compose或使用docekrhub中的某些映像,就像这样完成 此外,您可以尝试将compose作为构建的一部分安装。只需将其下载到某个本地目录并从那里使用即可。文档中的“作为容器安装”部分对我很有用: 文档中的“作为容器安装”部分对我很有用:
我想我还不够清楚,获取docker compose.yml不是问题,因为它是从git获取的,问题是容器中不存在实际的
docker compose
二进制文件,我不确定如何从withinSo开始工作,您不确定如何安装它?我想是的,我试图用docker exec
安装它,但没有取得任何成功。我想我还不够清楚,获取docker compose。yml
不是问题,因为它是从git获取的,问题是容器中不存在实际的docker compose
二进制文件,我不确定如何从withinSo开始工作,您不确定如何安装它?我想是的,我尝试用docker exec
安装它没有成功。您在jenkins容器中使用的docker映像是什么?它应该在itI中安装docker compose I use the Blue Ocean Latest您可以发布用于构建的jenkins文件吗?您在jenkins容器中使用的docker映像是什么?它应该在itI中安装docker compose I use the Blue Ocean Latest您可以发布用于构建的Jenkins文件吗?它是否与docker exec
相同?Jenkins是否在主映像上为每个构建运行或构建创建新容器?如果是这样,您将没有时间使用docker exec进行安装,因为容器仅在生成期间存在。这是否与docker exec
相同?Jenkins是否正在为主映像上的每个生成运行或生成创建新容器?如果是这样,您将没有时间使用docker exec进行安装,因为容器仅在构建期间存在。
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
sudo curl -L --fail https://github.com/docker/compose/releases/download/1.25.0/run.sh -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose