问题标签 [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.
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 注册表。
你能给我一些建议吗?
谢谢你们!
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 守护程序以外的其他东西。
docker - 无法从 Docker Build 中的 ECR 中提取
当我尝试使用 AWS CodeBuild 从 ECR 提取图像作为 Docker 构建的一部分时遇到了凭证问题。
对于上下文,我们的设置是这样的:
Codebuild 正在调用我们编写的内部 docker 工具。然后,此工具正在执行 docker 构建。可以使这更容易理解的示例命令:
“ourtoolscript”只是一个设置一堆环境变量的bash脚本,最后用我们指定的命令调用docker run。
问题
我们正在尝试在此工具中进行 docker 构建。它可以在本地工作,它也可以与其他不从 ECR 提取图像进行构建的 repo 一起使用。
我们这样做是为了标记的所有逻辑和一切都是工具中的脚本,我们可以将其应用于每个 repo。所以说只在工具之外进行 docker build 是不可接受的解决方案。
如果 docker 文件从 ECR 中提取“FROM”,它将失败并显示:
我尝试过的事情:
- 执行https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html#troubleshooting-versions中的步骤
- 首先从我们的工具中执行 docker pull,这很有效。但这不是我们可以继续做的事情
- 在工具之外执行 docker 构建,这很有效。
我所知道的:
- CodeBuild 提供的凭据可以很好地进入我们的工具。因为它可以毫无问题地推拉
- 如果不是从 ECR 图像构建,我可以构建得很好
- docker build 的 pull 与普通的“docker pull”的工作方式有所不同
- 如果我只是做一个简单的“docker build”。在工具之外没有构建参数。它可以很好地提取图像。所以我认为我在这些变量上走错了路。
其他信息:
我的 docker build 命令(删除了一些额外的东西):
docker - 无法从 docker 映像连接到 dockerhost
我正在尝试使用 docker(dind) 图像来构建图像。当我在 DockerFile 中运行docker info时,它抱怨找不到 dockerhost。在构建 Docker 映像时有什么办法,我们可以在构建步骤中使用 docker host 吗?
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 脚本运行(首先),但这会阻止进程并且没有执行后续步骤。
我的选择已经不多了,我需要一些帮助来了解它是如何工作的以及是否有一些解决方案。
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
,我已经检查了上述所有文件的合规性。
docker - 在 GitLab-ci Docker build 中执行外部 bash 脚本
我想从 gitlab-ci.yml 执行一个外部(在本地机器上)bash 脚本,它使用 docker:stable 图像。我想执行位于 gitlab docker 映像之外的 startup.sh。这是可能的还是有更好的选择?
gitlab-ci.yaml
bash 脚本
macos - 在容器内 chowning 主机绑定的 `docker.sock` 会破坏主机 docker
在 Docker for Mac 的 vanilla 安装中,我docker.sock
的所有者是我的本地用户:
即使我在我Dockerfile
的.docker.sock
root:root
换一种方式,以 root 身份运行 DinD,chown
插入套接字,然后运行命令会破坏主机 docker。
我已经看到人们报告 chowning 是要走的路,所以也许我做错了什么。
问题:
- 为什么主机 docker 坏了?
- 有什么方法可以防止主机 docker 中断并且仍然允许我的用户访问 docker 内的套接字?
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
来检索网络名称。