表达能力有限,起了一个奇怪的标题 QAQ~(望 V 友们海涵 QAQ~)
太啰嗦不看版:
** 用 docker 安装的 jenkins 怎样调用物理机上的 docker-compose 命令?**
啰嗦版:
-
有一台装了
docker和docker-compose的 ubuntu 服务器(很奇怪,mac 和 windows 安装的 docker 自带 docker-compose, 服务器端docker安装完后,还需要单独安装docker-compose,通过apt install docker-compose安装,物理机上通过/usr/bin/docker-compose up -d命令可启动) -
下载 jenkins 镜像并启动,
docker pull jenkinsci/blueocean,
启动命令:
docker run -d --restart=always --name=my_jenkins -p 8089:8080 -p 50001:50000 -v /root/data/jenkins_home:/var/jenkins_home --user root --privileged -v /var/run/docker.sock:/var/run/docker.sock a1a26454c4cd
加上 --privileged -v /var/run/docker.sock:/var/run/docker.sock 参数是为了让身处容器内的 jenkins 能够调用物理机中的 docker 命令~
- 但是这样一顿操作后,jenkins 可以执行物理机的 docker 命令,执行到 docker-compose 命令就直接显示无法找到
docker-compose

各种搜索发现大多是用 docker-compose 管理 jenkins 容器的回答,对于用 jenkins 容器调用 docker-compose 命令这种场景很少~可能我这种用 jenkins 容器启动 docker-compose 的思路不对~
转念一想,docker 既然已经提供 -v /var/run/docker.sock:/var/run/docker.sock方式允许一个容器调用物理机的docker命令,可能也会允许一个容器通过调用物理机的 docker-compose 命令来管理多个容器,难就难在找不到把物理机 docker-compose 命令映射到 jenkins 容器的路子~
感谢大佬们指点迷津!!!