问题标签 [docker-in-docker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
337 浏览

docker - Docker build ind 不会产生与本地 docker build 相同的结果

我一直在尝试使用共享跑步者设置 gitlab ci。我的 .gitlab-ci.yml 看起来像这样:

我正在尝试构建的项目是应该在 kubernetes 集群中运行的 Meteor 应用程序(Meteor 版本 1.6.1)。为了创建容器,我使用https://github.com/jshimko/meteor-launchpad。当我在本地机器上使用 docker build 时,一切正常,但是在 CI 中出现此错误(在 build in stage 之后Running npm install in the server bundle...):

但我不相信这是一个实际的流星问题,因为我知道代码有效。另一个奇怪的事情是,在运行流星 1.5.2.2(新版本是 1.6.1)的旧版本代码中构建实际上是成功的,但是在 kubernetes 中运行时它会中断。来自 pod 的错误显示为:

忽略运行器状态的构建日志:

因为我知道构建可以成功,所以我假设 docker-in-docker 在共享运行器上使用正确的设置运行。通过运行特权将外部 docker 套接字绑定到内部 och (如此此处所述)

那么为什么我的构建会在 CI 上损坏/失败?

编辑:我的本地构建是在 ubuntu 16 上完成的

0 投票
3 回答
9154 浏览

docker - Docker 中的 Docker - 卷不工作:第一级容器中的文件已满,第二层为空

我在 Docker 中运行 Docker(特别是运行 Jenkins,然后运行 ​​Docker 构建器容器来构建项目映像,然后运行这些容器,然后运行测试容器)。

这是 jenkins 镜像的构建和启动方式:

詹金斯工作正常。但是有一个Jenkinsfile基础的工作,它运行这个:

这最终会出现错误:

您指定的目标需要执行项目,但此目录 (/tmp/build) 中没有 POM。

当我docker exec -it sh对容器进行操作时,它/tmp/build是空的。但是当我在 Jenkins 容器中时,该路径/var/jenkins_home/...QO3Q/存在并且它包含所有已签出并准备好的文件的工作区。

所以我想知道 - Docker 如何愉快地安装卷然后它是空的?*

更令人困惑的是,此设置适用于我在 Mac 上的同事。我在 Linux、Ubuntu 17.10、Docker 最新版本上。

0 投票
1 回答
657 浏览

docker - `docker push` 到 gcr.io 在 Kubernetes + Docker-in-docker + 用户定义的 docker 网络中失败

背景:

我正在使用 Drone 来测试应用程序。Drone 部署到 Kubernetes,附带一个docker(dind / docker-in-docker) 容器。

测试完成后,我再次使用无人机构建并推送几个约 40mb 的 docker 镜像到 us.gcr.io

当 Drone 创建 docker 容器来测试我的应用程序并创建单独的容器来构建我的应用程序和图像时,它会创建一个 docker 网络来链接容器以构建服务,例如临时测试数据库(CI 管道中的相当标准)。

但是,Kubernetes pod 网络和 Docker-in-Docker 的组合在尝试推送到 gcr 时会导致以下结果:

但是,当推送到(我假设是)较旧的注册表版本时,它可以完美运行。

在没有启用 docker 容器网络的情况下推送到 gcr 时,它也可以完美运行。

这是正在运行的 docker 命令。显然,敏感数据已被省略。

jules -stage deploy_docker命令同时在 8 个不同的目录上运行 a go build, docker build, 然后。gcloud docker -- push...

所以,总结一下:

Kubernetes pod + docker-in-docker + gcloud docker push 导致连接持续中断。

我可以用 docker daemon 或 kubernetes 网络设置做些什么或减轻这种情况吗?至少我想了解为什么会这样。

谢谢!


更新:

这甚至不需要 Kubernetes 发生!

我刚刚用一个运行 Ubuntu 的新 GCE 实例进行了尝试,它也在那里发生。

0 投票
2 回答
9689 浏览

docker - Docker dind:无法连接到 Docker 守护进程

运行时docker:dind我不能使用docker login命令和任何其他 docker 命令。

我的用例是我有一个 Nexus Docker Registry,我正在尝试通过 GitLab CI 连接到这个注册表。

给:

0 投票
1 回答
867 浏览

docker - 为什么 Docker 构建在 Docker Jenkins 构建中的 Docker 中失败:'/proc/1/map_files':不允许操作

以下指令在 MacOS Docker Engine 18.04 中正确构建,而在运行 Docker 的 Jenkins 容器(Docker-in-Docker,dind,Inception)内置时,相同的指令失败......为什么错误的原因以及解决方法是什么?

在 MacOS 上构建本地 docker

Docker-in-Docker Jenkins 构建

0 投票
1 回答
41 浏览

docker - 是否可以在 docker 中启动真正的 docker 守护进程?

出于某种原因,我需要在另一个 docker 中运行 docker。映射 docker.socket 不是一个选项,我需要真正的 docker 守护程序才能在 docker 中启动。

有人知道这是否可能吗?

0 投票
1 回答
5063 浏览

docker - 如何在 Kubernetes pod 中运行 docker 镜像?

如何在 kubernetes pod 中运行 docker 映像?

我的一个队友定义了一个新的 docker 镜像并将其推送到我团队的私有注册表中。我拥有一些在我们的 kubernetes 集群中运行的代码,我们需要让我的代码有效地运行docker run gcr.io/our-project/teammates-image:latest

我一直在考虑在我们的 kubernetes pod 上启用 docker-in-docker,但我运气不佳。我目前正在尝试minikube,每当我尝试时,docker run我都会得到:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?..

我已经添加 securityContext: privileged: true

到我的容器规格。我怀疑我需要更多配置,但还没有弄清楚是什么。

我也在尝试评估我是否可以kubectl run --image=gcr.io/our-project/teammates-image:lastest从 kubernetes pod 中。

是否有从 kubernetes pod 中运行 docker 映像的“正确”方法?如何使用 docker-in-docker 运行映像?

0 投票
1 回答
919 浏览

docker-compose - 在 circleci 的 docker executor 中使用 docker-compose 进行网络连接

我猜这是一个circleci问题。

我对 circleci 很满意,但现在我遇到了一个问题,我不知道我做错了什么。也许这很容易,但我看不到它。

简而言之

我不能让容器在 circleci 上相互交谈。

问题

基本上我想做的是启动一个服务器容器和一个客户端容器,然后让它们互相交谈。我在这里创建了一个最小的例子:https ://github.com/mRcSchwering/circleci-integration-test

README.md基本上解释了预期的结果。我有一个.circleci/config.yml这样的:

在 docker 容器docker-compose中安装,然后用于启动 aserver和 a client(此处为 postgres)。在最后一步中,我client告诉server. 但是,它找不到server

文件

docker-compose.yml看起来像这样

client从这样的 dockerfile 构建的

笔记

如果我在我的 Linux 上重复所有内容(也使用 docker-in-docker),它就可以工作。但我猜有些事情在circleci上的工作方式完全不同。我发现有些人提到在 circleci 网络和绑定挂载上可能很棘手,但我没有找到任何可以帮助我的东西。有这个文档,但我认为我已经这样做了。然后是这个项目,有人似乎在 circleci 上成功地做同样的事情。但我无法弄清楚那里有什么不同......

无论如何,我真的很感谢你的帮助。到目前为止,我已经放弃了这一点。

最佳马克

0 投票
1 回答
12296 浏览

docker - gitlab-ci docker-in-docker 访问不安全的注册表

在配置 gitlab-ci 以构建 docker 映像并将它们推送到我的 gitlab 的不安全注册表时,我遇到了几个错误。我的 gitlab-ci.yaml 如下所示:

第一个错误是:

通过将登录命令更新为

不幸的是,更新后,我遇到了另一个错误:

我该如何解决这个问题?

0 投票
1 回答
72 浏览

docker - docker 和 docker-in-docker 在哪个路径中运行其容器?

我有一个 dockerized nginx 服务器,我可以在本地机器上构建和运行它,没有任何问题。所以现在我想在 gitlab 运行器的帮助下部署它。

这是我的简单 dockerfile:

因此,如果我在本地机器上构建并运行它,它就可以工作。但此时我有第一个问题:docker 在哪里运行 nginx 服务器?因为如果我查看 /usr/share 那里什么都没有。

现在,如果我将我的项目推送到 gitlab,请注册一个运行器并让它执行以下 gitlab-ci 文件:

...工作做得很好。gitlab页面的控制台输出没有错误。这是输出:

但是如果我现在访问我的服务器的 IP 地址,静态 html 测试页面不会出现。所以我怀疑路径有问题?或者有什么我完全想念的吗?提前致谢。