Zho*_*ndr 12 continuous-integration jenkins docker
我在jithub上运行容器和项目源代码中的jenkins.
我需要在与jenkins相同的主机上运行容器中的项目,但不是作为docker-in-docker,我想将它们作为兄弟容器运行.
我的管道看起来像这样:
我现在做的是使用jenkins容器的主机docker socket:
/var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
当jenkins容器将带有/ var/jenkins_home/workspace/BRANCH_NAME的源代码的卷挂载到项目容器时,我遇到问题:
volumes:
- ./servers/identity/app:/srv/app
Run Code Online (Sandbox Code Playgroud)
我在项目容器中获取空文件夹"/ srv/app"
我最好的猜测是,docker试图从主机而不是jenkins容器安装它.
所以问题是:我如何明确设置容器从哪个装载卷?
使用Jenkins docker容器运行另一个容器时遇到相同的问题。
这不是推荐的方式,在这里进行解释。如果仍然需要使用这种方法,那么这个问题就不成问题了。
假设我们需要在Jenkins docker容器内运行另一个容器(ContainerA),docker管道插件将用于--volumes-from
将Jenkins容器卷安装到ContainerA。
如果尝试使用Jenkins容器中的特定目录--volume
或-v
将其映射到ContainerA,则会出现意外情况。
这是因为--volumes
或-v
尝试将主机中的目录映射到ContainerA,而不是尝试从Jenkins container中的目录映射。如果在主机中找不到目录,那么您将在ContainerA中获得一个空目录。
简而言之,我们无法将特定目录从containerA映射到containerB,只能将整个卷从containerA装载到containerB,并且不支持卷别名。
尝试:
docker run -d --volumes-from <ContainerID> <YourImage>
Run Code Online (Sandbox Code Playgroud)
其中容器 ID 是您想要从中获取 mont 数据的容器的 ID。
您还可以通过以下方式创建卷:
docker volume create <volname>
Run Code Online (Sandbox Code Playgroud)
并将其分配给两个容器
volumes:
- <volname>:/srv/app
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9060 次 |
最近记录: |