问题标签 [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 - 如何使用 docker(分别为 docker-in-docker)在 Gitlab CI 上启动 nginx?
我有一个 DigitalOcean 服务器,其中有一个注册到一个简单的 Gitlab 存储库的 gitlab 运行器。第一步,我想拉并运行普通的 nginx。我可以通过该服务器上的 docker 安装来做到这一点,没有任何问题。
所以现在我想在 dind (docker-in-docker) 的帮助下做到这一点,因为 gitlab 文档通过 gitlab runner 推荐了它。
我定义了以下 gitlab-ci 文件:
我的 gitlab 跑步者在 repo 中注册得很好。这是 gitlab-runner 服务的 config.toml:
...工作做得很好。gitlab页面的控制台输出没有错误。这是输出:
现在,如果我访问我的服务器的 IP 地址。静态 nginx 测试页面不显示。所以我怀疑dind的端口暴露或路径有问题?我到底在这里想念什么?
提前致谢。
docker - Docker 内部的 Docker 卷?
我正在运行 buildbot,它是 EC2 机器上的 CI 工具。它目前作为 docker 容器运行,一个用于 buildbot master,一个用于 buildbot worker。在 buildbot worker 中,我必须再次运行 docker 来构建图像和运行容器。
在对如何最好地做到这一点进行了一些研究之后,我已将 docker sock 文件从主机安装到 buildbot 工作容器。现在,从 buildbot worker 内部,我可以连接到主机 docker 守护进程并使用构建缓存。
现在的主要问题是,在 buildbot 工作人员内部,我有一个 docker compose 文件,其中对于一项服务,我正在安装一个这样的文件,
./configs/my.cnf:/etc/my.cnf
但它失败了。并进行更多研究,这是因为它configs/my.cnf
与 buildbot 工作目录相关,并且由于我使用的是使用主机路径解析文件的主机 docker 守护程序,因此它无法找到该文件。
我无法弄清楚如何最好地做到这一点。有一些关于为此使用数据量的建议,但我不确定如何最好地使用这些建议。关于我们如何做到这一点的任何想法?
docker - 将 docker swarm 秘密传递给同级容器
我有一个 docker swarm,我从这个 compose 文件开始:
现在,在运行的容器中my_service
,我启动了一个新的同级容器(注意我已经安装了 docker 套接字),我希望可以访问my-secret
它,尽管它不是 swarm 的一部分。最好的方法是什么?
简单地将秘密挂载为卷 ( docker run -v /run/secrets:/run/secrets sibling_image
) 是行不通的,兄弟容器可以看到my-secret
,但它是空的。
传递环境变量是可行的,但如果我有很多秘密,那就有点太麻烦了:docker run -it --env MY_SECRET=$(cat /run/secrets/my-secret) sibling_image
docker - 从容器内部构建和推送 docker 映像
上下文:我repo2docker
用来构建包含实验的图像,然后将它们推送到私有注册表。
我正在使用docker-compose
.
这是我尝试过的:
然后我将作业传递给 rqworker(rqworker 部分运行良好)。
但docker
不会在我的容器中启动。因此我无法登录注册表,也无法构建映像。
(请注意,我需要docker
运行,但不需要运行容器。)
docker - 如何在 gitlab CI 中的 docker-in-docker (dind) 中设置代理
我正在尝试使用 gitlab CI 设置工作以从 dockerfile 构建 docker 映像,但我在代理后面。
我.gitlab-ci.yml
的如下:
wget
有效,这意味着代理设置在理论上是正确的
但是这些命令docker search
,docker info
并且docker build
不起作用,显然是因为代理问题。
作业输出的摘录:
看来 docker 没有从环境变量中读取来设置代理。
注意:我确实在 --privileged 模式下使用跑步者,正如文档指示的那样。
我该如何解决?
python - 使用 docker-py 从现有容器运行 docker 容器
我有一个运行 Flask 应用程序的 Docker 容器。当 Flask 接收到 http 请求时,我想触发一个新的临时 Docker 容器的执行,一旦它完成它必须做的事情就会关闭。
我已经阅读 Docker-in-Docker 应该避免,所以这个新容器应该在我的主机上作为同级容器运行,而不是在 Flask 容器中运行。
使用docker-py的解决方案是什么?
gitlab - GitLab CI 超时
我在 Kubernetes 中运行了一个 GitLab 安装,突然间,我的连接dind
停止工作。这个问题开始出现在大约 30 个项目中的一个项目中,并且正在其他项目中工作,并且没有进行任何更改。
构建给出以下错误:
我正在运行容器特权,如我的/etc/gitlab-runner/config.toml
:
我发现与确保跑步者享有特权的唯一其他解决方案是this one。我尝试将我的变量设置为.gitlab-ci.yaml
:
错误保持不变。
根据另一篇文章,值得注意的是以下命令的输出:
请注意“没有这样的文件或目录”错误。
我被难住了,由于我的构建在注册阶段失败,我无法发布。关于去哪里的任何指示?
谢谢。
编辑
这不是一个解决方案,但我注意到发生这种情况是因为我为这个项目设置了一个专门的跑步者。一旦我删除它,它就会再次起作用。不是修复,但对于遇到相同问题的任何人来说都是重要的信息。
docker - 为自己的 docker 注册表提供 dockerd 的 SSL 证书
如何在gitlab-ci管道中为自己的docker注册表提供自己的CA根证书和SSL客户端证书(证书+密钥)给dockerd?
我有虚拟机(CentOS 7)并安装了 docker 和 gitlab-runner。跑步者注册为docker:dind
. 设置工作正常,但我无法连接到我自己的 docker 注册表,该注册表具有我自己的 CA 的证书,但也在使用客户端 SSL 证书。当我传递给dockerd
参数--insecure-registry=gitlab.mazel.tov:4567
时,它不会验证 CA,但我仍然不知道如何提供客户端 SSL 证书,并且 pipile 将因此错误而失败。
我在docker:dind容器中也有我的证书的文件夹,但是这种方法不适用于dockerd
?但在我的电脑或服务器上它工作正常。
我也探索过dockerd --help
,但关于证书的选项仅适用于 docker 套接字和 docker 注册表的 SSL 配置。
/etc/gitlab-runner/config.toml
.gitlab-ci.yml
我也不喜欢 --insecure-registry 选项。我的 gitlab 服务器在 Nginx 级别上配置了客户端证书。
/etc/gitlab/gitlab.rb
证书在我的机器和其他服务器上工作正常,我只是在用 gitlab-ci 管道实现它时遇到了麻烦......
当我在我的 Mac 上测试 docker:dind 并挂载证书时,它工作正常,所以问题只出在 gitlab-ci 管道中?也许在安装文件夹发生之前加载了 dockerd?
docker - 将图像加载到在 k8s 中运行的 docker-in-docker (dind)
所以我让 docker-in-docker 在 pod 中作为 sidecar 运行,其中 /var/lib/docker 指向 emptyDir: {}。
在它出现后,我需要将几张图像加载到其中以使其按我的需要工作。我可以 docker 从我的仓库中保存它们并将它们移动到节点上的存储中,而不用担心太多。
是否有一种简单、可接受的方式将它们拉入,或者我是否需要使用 docker-cmds 和脚本来尝试另一个容器?
linux - 在 Docker 中使用 Docker 的父 Docker 容器
我正在为我的构建开发一个 jenkins ssh 代理我想安装 docker 以便它可以运行和构建 docker 映像
我目前在我的 Dockerfile 中有以下内容
当我运行 docker 时,这很好用
我遇到的问题是当我在容器中运行 docker ps 时,它也显示了我所有的父容器,有没有办法防止这种情况?