我在 Docker 容器中运行 Jenkins。在本文之后,我将绑定安装 Docker 套接字,以便从 dockerized Jenkins 与其交互。我也绑定安装容器目录jenkins_home
。这是我的卷的快速回顾:
# Jenkins
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
- ./bar:/var/jenkins_home
我从主机目录运行它/home/foo/
,因此在主机文件系统中创建以下目录(并安装):
/home/foo/bar
现在,我有一个 Jenkins 管道 ( mypipe
),它运行一个 docker-compose 文件,启动一个具有以下卷的 MySQL 容器:
# MySQL created from Jenkins
volumes:
- ./data:/var/lib/mysql
奇怪的是,它最终安装:
/var/jenkins_home/workspace/mypipe/data
</var/lib/mysql
代替:
/home/foo/bar/workspace/mypipe/data
</var/lib/mysql
这是一个图形回顾:
搜索stackoverflow,原来它发生的原因是:
卷源路径(: 左侧)不是指中间容器,而是指主机文件系统!
没关系,但我的问题是:
为什么在那儿?
我的意思是为什么 does.data
被准确地翻译成 path: /var/jenkins_home/workspace/…/data
,因为 MySQL 容器不知道 path /var/jenkins_home
?