问题标签 [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 投票
1 回答
2100 浏览

docker - Gitlab CI 运行代码质量不生成 .json 文件

我按照官方指南部署了一个管道来分析我的代码质量。尽管管道通过并且作业成功,但 json 文件不是由 docker 生成的。这些通知显示:

警告:有新版本 (v0.83.0) 可用。升级说明位于:https ://github.com/codeclimate/codeclimate#packages 上传工件...警告:gl-code-quality-report.json:没有匹配的文件错误:没有文件上传
作业成功

这是我的/etc/gitlab-runner/config.toml文件:

我的 Gitlab 版本是 11.7

这是我的.gitlab-ci.yml文件:

由于我想提高拉图像的速度,所以我在 localhost 中部署了一个 docker 注册表。

你能给我一些建议吗?

谢谢你们!

0 投票
2 回答
121 浏览

docker - Docker in Docker, Building docker agent in a docker contains Jenkins Server

我目前正在使用 Docker 运行 Jenkins。在尝试构建 docker 应用程序时,我对是否应该通过绑定 /var/run/docker.sock 文件或在我的 Jenkins Docker 中安装另一个 docker 实例来在 Docker (Dind) 中使用 Docker 存在疑问。实际上,我以前看到过,不鼓励使用 docker.sock 以外的其他东西。

我实际上不明白为什么除了不污染主机之外,我们还应该使用主机上的 docker 守护程序以外的其他东西。

来源:https ://itnext.io/docker-in-docker-521958d34efd

0 投票
0 回答
1556 浏览

docker - 无法从 Docker Build 中的 ECR 中提取

当我尝试使用 AWS CodeBuild 从 ECR 提取图像作为 Docker 构建的一部分时遇到了凭证问题。

对于上下文,我们的设置是这样的

Codebuild 正在调用我们编写的内部 docker 工具。然后,此工具正在执行 docker 构建。可以使这更容易理解的示例命令:

“ourtoolscript”只是一个设置一堆环境变量的bash脚本,最后用我们指定的命令调用docker run。

问题
我们正在尝试在此工具中进行 docker 构建。它可以在本地工作,它也可以与其他不从 ECR 提取图像进行构建的 repo 一起使用。
我们这样做是为了标记的所有逻辑和一切都是工具中的脚本,我们可以将其应用于每个 repo。所以说只在工具之外进行 docker build 是不可接受的解决方案。

如果 docker 文件从 ECR 中提取“FROM”,它将失败并显示:

我尝试过的事情

我所知道的

  • CodeBuild 提供的凭据可以很好地进入我们的工具。因为它可以毫无问题地推拉
  • 如果不是从 ECR 图像构建,我可以构建得很好
  • docker build 的 pull 与普通的“docker pull”的工作方式有所不同
  • 如果我只是做一个简单的“docker build”。在工具之外没有构建参数。它可以很好地提取图像。所以我认为我在这些变量上走错了路。

其他信息
我的 docker build 命令(删除了一些额外的东西):

0 投票
1 回答
68 浏览

docker - 无法从 docker 映像连接到 dockerhost

我正在尝试使用 docker(dind) 图像来构建图像。当我在 DockerFile 中运行docker info时,它抱怨找不到 dockerhost。在构建 Docker 映像时有什么办法,我们可以在构建步骤中使用 docker host 吗?

0 投票
1 回答
721 浏览

docker - packer docker builder 在 docker 镜像中配置 docker

我正在尝试使用打包器配置 docker:dind 映像,它将构建另一个 docker 映像并使用以下构建脚本在 docker 内运行它:

当我运行此脚本时,它失败并出现以下错误:

问题是,当打包程序启动容器时,它会覆盖在 docker:dind 映像中配置的默认入口点 ["dockerd-entrypoint.sh"],并使用它自己的入口点 ["/bin/sh"]。这可以防止 docker 进程内的 docker 启动并且无法执行 shell 脚本。

我尝试使用以下选项更改入口点和 run_command,但在第一种情况下它没有效果(我假设它会在提交图像时在最后更新)并且在后者中它不能执行任何脚本。

另一种选择是将“[dockerd-entrypoint.sh]”作为内联 shell 脚本运行(首先),但这会阻止进程并且没有执行后续步骤。

我的选择已经不多了,我需要一些帮助来了解它是如何工作的以及是否有一些解决方案。

0 投票
1 回答
415 浏览

docker - 从 dind 中的 armhf/ubuntu 构建时,回显到 docker 文件中的文件失败

我在 Gitlab 上使用 CI 管道构建 docker 映像以部署到 Raspbian。由于我的构建需要访问一些私有 NPM 包,我在 Docker 文件中包含以下行,该行使用存储在环境变量 $NPM_TOKEN 中的值创建令牌文件:

resin/raspberrypi3-node从我通常的图像( )构建时,这很好用。但是,我的一个容器是从armhf/ubuntu. 执行上述行时,构建失败并出现以下错误:

该构建docker build在我的开发机器(Windows 10)上运行良好,但不在 gitlab 管道中。

我尝试将我的 docker 和管道文件剥离到最低限度,并从路径中删除了环境变量和波浪号,但这对于 ubuntu(但不是树脂)图像仍然失败。

Dockerfile.test.ubuntu:

Dockerfile.test.resin:

gitlab-ci.yml:

.sh我已经搜索了类似的问题,并且在运行包含CRLF组合的文件时看到了此错误报告。虽然我在 Windows 上开发,但我的 IDE(VS 代码)设置为使用LF,而不是CRLF,我已经检查了上述所有文件的合规性。

0 投票
1 回答
11649 浏览

docker - 在 GitLab-ci Docker build 中执行外部 bash 脚本

我想从 gitlab-ci.yml 执行一个外部(在本地机器上)bash 脚本,它使用 docker:stable 图像。我想执行位于 gitlab docker 映像之外的 startup.sh。这是可能的还是有更好的选择?

gitlab-ci.yaml

bash 脚本

0 投票
1 回答
616 浏览

kubernetes - Container in dind access another container in the same Kubernetes pod

In a Kubernetes pod, I have:

  • busybox container running in a dind container
  • fluentd container

I understand if dind wants to access fluentd, it needs to simply connect to localhost:9880. But what if busybox wants to access fluentd as the depicted diagram below. Which address should I use?

dind access to another container

0 投票
1 回答
321 浏览

macos - 在容器内 chowning 主机绑定的 `docker.sock` 会破坏主机 docker

在 Docker for Mac 的 vanilla 安装中,我docker.sock的所有者是我的本地用户:

即使我在我Dockerfile的.docker.sockroot:root

换一种方式,以 root 身份运行 DinD,chown插入套接字,然后运行命令会破坏主机 docker

我已经看到人们报告 chowning 是要走的路,所以也许我做错了什么。

问题:

  • 为什么主机 docker 坏了?
  • 有什么方法可以防止主机 docker 中断并且仍然允许我的用户访问 docker 内的套接字?
0 投票
1 回答
135 浏览

docker - 如何从容器中获取 Docker-compose 堆栈中 Docker 网络的名称?

我有一个 Docker Compose 堆栈应用程序。该应用程序的一个功能是它有一个 .NET Core 后端作为堆栈中的容器运行,它能够生成新的临时容器来运行数据处理任务。这些容器需要与堆栈存在于同一网络中才能访问数据库。.NET Core 后端容器包含必要的 docker 工具,并且可以docker使用 docker-in-docker 方法执行命令。

我需要知道如何从堆栈中的容器中找出堆栈正在使用的网络的名称。只需知道容器本身运行的网络名称就足够了。但是我不能也不想依赖任何硬编码的值。另一种方法是能够毫无疑问地知道我在其中运行的容器的名称,这样我就可以docker inspect用来提取网络名称。

Docker-compose 似乎确实使用了相对可预测的名称(例如myapp_backend_1,用于后端容器。myapp_default用于网络),但据我所知,这些名称并不能保证,所以我不能依赖将这些名称硬编码到应用程序中。

概括:

  • 需要能够从Docker 容器中检索 Docker 容器所连接的网络的名称。
  • 或者,需要能够从该容器中确定容器的名称,以便我可以使用它docker inspect来检索网络名称。