- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 Docker 中运行 Docker(特别是运行 Jenkins,然后运行 Docker 构建器容器来构建项目镜像,然后运行这些容器,然后运行测试容器)。
jenkins 镜像是这样构建和启动的:
docker build --tag bb/ci-jenkins .
mkdir $PWD/volumes/
docker run -d --network=host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v $PWD/volumes/jenkins_home:/var/jenkins_home \
--name ci-jenkins bb/ci-jenkins
Jenkins 工作正常。但是有一个基于 Jenkinsfile
的作业,它运行这个:
docker run -i --rm -v /var/jenkins_home/workspace/forkMV_jenkins-VOLTRON-3057-KQXKVJNXOU4DGSUG3P27IR3QEDHJ6K7HPDEZYN7W6HCOTCH3QO3Q:/tmp/build collab/collab-services-api-mvn-builder:2a074614 mvn -B -T 2C install
这会导致错误:
The goal you specified requires a project to execute but there is no POM in this directory (/tmp/build).
当我对容器执行 docker exec -it sh
时,/tmp/build
为空。但是当我在 Jenkins 容器中时,路径 /var/jenkins_home/...QO3Q/
存在,它包含所有已 checkout 并准备好的文件的工作区。
所以我想知道 - Docker 怎样才能愉快地挂载卷然后它是空的?*
更令人困惑的是,此设置适用于我在 Mac 上的同事。我在 Linux、Ubuntu 17.10、Docker 最新版本上。
最佳答案
经过一番研究,冷静下来思考,我意识到Docker-in-Docker并不是真的那么“-in-”,而是“Docker-next-to-Docker” ”。
使容器能够运行另一个容器的技巧是通过卷共享 /var/run/docker.sock
:-v/var/run/docker.sock:/var/run/docker.sock
然后容器中的docker
客户端实际调用宿主机上的Docker。
卷源路径(:
左侧)不是指中间容器,而是指宿主文件系统!
意识到这一点后,修复方法是使宿主文件系统和 Jenkins(中间)容器中 Jenkins workspace
目录的路径相同:
docker run -d --network=host \
...
-v /var/jenkins_home:/var/jenkins_home
瞧!有用。 (我创建了一个符号链接(symbolic link)而不是移动它,似乎也可以。)
如果您正在查看同事的 Mac,这会有点复杂,因为 Docker 的实现方式有些不同 - 它在基于 Alpine Linux 的 VM 中运行,但假装没有。 (不是 100% 确定这一点。)在 Windows 上,我读到路径有另一层抽象 - 从 C:/somewhere/...
映射到类似 Linux 的路径。
我希望我能节省一些时间来弄清楚:)
关于Docker 中的 Docker - 第二层中的卷不工作 : Full of files in 1st level container, 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49312100/
我是 C 的新手,在练习中,我必须编写以下代码部分的输出,即 3。但我不明白为什么会这样。 int main() { char st[100]="efgh"; printf ("\n%
我遇到了这个错误: java.lang.IllegalArgumentException: Removing a detached instance model.student 然后我在stackov
python 3.8.10Ubuntu 20.04 使用 st_aggrid (用于 Streamlit 的 AgGrid 的 Python 端口。) Streamlit 允许使用 st.column
这篇文章是识字的Haskell。只需放入“pad.lhs”之类的文件,ghci就可以运行它。 > {-# LANGUAGE GADTs, Rank2Types #-} > import Control
我有一个 NUCLEO-F401RE board (与 STM32F401RE ) 它在大多数情况下都运行良好。最近在这里,我按照书中的一个教程 "Mastering STM32 " 它说安装的地方
最近一两个月一直在学习Haskell,最近解决了this编码问题。额外的挑战是在没有额外空间和线性时间的情况下完成任务,我认为这不可能以纯函数的方式完成,所以自然而然地我发现了 ST monad,我认
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
我已经搜索过堆栈溢出,但没有一个能真正解决我的问题。 我能够为我的库构建 .so 文件并将其加载到 jniLibs 目录中。当我运行应用程序时,我得到了这个 java.lang.Unsatisfied
我在类加载器方面遇到问题。有时有效,有时无效。 当我开始时,我已经测试了它的工作原理,但不是从 *.jar 测试的: URL url = AcAnalyzer.class.getResource(".
我正在玩http://hackage.haskell.org/packages/archive/vault/0.2.0.0/doc/html/Data-Vault-ST.html并想要编写如下所示的函
为什么 ST 被设计为禁止使用以下代码 as shown in the wikibook ?这篇文章似乎表明,如果允许的话,ST 效果会泄漏到另一个 ST 中,但我不太明白为什么。 我似乎无法运行特定
我最近开始在 Hackage 上查看核心库,并且有一个反复出现的习惯用法我不明白。这是 ST module 中的一个示例: instance Monad (ST s) where {-# IN
如果输入 url 重新启动(他们在 rtmp 流中添加新视频)然后在我的 ffmpeg 我看到这个 PTS 4294794919, next:104020298 invalid dropping st
ST monad 在 GHC 中有特殊的编译器支持吗? 最佳答案 您可以在此处查看 STRefs 的代码:http://haskell.org/ghc/docs/latest/html/librari
我确信这将是一个简单的项目,但有一个作为测试启动的项目。 创建后,它被保存为“Project2.dpr” 现在测试不再是“测试”,我想将项目名称更改为更有意义的名称。 最好的方法是什么? 仅将文件名和
我有一些代码目前使用 ST monad 进行评估。我喜欢不要把 IO 放在任何地方,因为 runST方法产生一个纯结果,并表明这样的结果是可以安全调用的(相对于 unsafePerformIO )。但
我正在努力实现 UCT Haskell 中的算法,需要大量的数据处理。无需过多讨论,它是一种模拟算法,在每个“步骤”中,根据某些统计属性选择搜索树中的叶节点,在该叶处构造一个新的子节点,以及与该叶节点
我想学习使用 ST-Monad。因此,我想为每个整数重写一些代码计算——直到一个极限——所有它的真因数的列表。结果应该是一个数组,索引“n”的条目应该是它的真除数的列表。 这是通过为每个整数“n”计算
我在 ST 中有一个计算,它通过 Data.Vector.Unboxed.Mutable 分配内存。该向量永远不会被读取或写入,也不会在 runST 之外保留任何对其的引用(据我所知)。我遇到的问
以下代码创建数组,初始化,然后返回不可变数组。 import Data.Array import Control.Monad.ST import Data.Array.ST import qualif
我是一名优秀的程序员,十分优秀!