docker - 从 Docker 容器运行 docker-compose
问题描述
我在已安装的容器Jenkins
内运行。我可以从此容器调用以在主机上运行服务吗?我尝试从容器中执行安装脚本,但它一直说Docker
docker.sock
docker-compose
“没有这样的文件或目录”。
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 文件位置/home/leonid/workspace/project1/docker-compose.yml
在 docker 主机上,则需要-v /home/leonid/workspace/project1/:/home/leonid/workspace/project1/
为 jenkins 容器添加卷。
然后,在您的 Jenkins 工作中:
cd /home/leonid/workspace/project1/
docker-compose up -d
这是为什么?
请记住,docker-compose 会向 docker 引擎提供指令。docker 引擎在 docker 主机上运行(而不是在 Jenkins 容器中)。因此 docker-compose 给 docker 引擎的任何路径都必须存在于 docker 主机上。
推荐阅读
- javascript - Vue 3:从其他组件设置动态组件
- raspberry-pi - Wireguard 似乎没有通过流量,分配了奇怪的 IP
- javascript - 谷歌优化:如何使用和不使用 Javascript 脚本进行 A/B 测试
- python - 如何在 djano 服务器中仅授权颤振应用程序?
- latex - 如何解决 LaTeX 中的文本太宽错误?
- c - 将字转换为二进制值
- amazon-web-services - 如何使用nodejs在lambda函数中进行dynamodb分页
- javascript - 使用 javascript 在循环中绘制 SVG 折线
- masonry - Vue 3 砌体布局
- python - 如何使用 np.save 以“csv”格式保存数据?