问题标签 [dockerode]
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.
javascript - Dockerode 中的错误 ERR_STREAM_WRITE_AFTER_END
我在 Node.js 应用程序中使用 Dockerode 触发了一些 Docker 容器。在某些情况下会触发错误:(Error [ERR_STREAM_WRITE_AFTER_END]: write after end
请参阅下面的日志)。有什么我做错了吗?
这是 Docker 运行代码:
这是错误:
javascript - 使用 Dockerode 以分离模式运行 Docker 容器
我正在使用 Dockerode 通过以下run()
方法触发 Docker 容器的执行。请问如何在分离模式下运行它?
javascript - dockerode 命令式 cli 等效项
我正在尝试在我的节点应用程序的 dockerode 容器中编译和执行 java 程序。我可以通过首先tmp.java
使用基本的 javascript 写入文件然后运行以下 shell 命令来做到这一点:
docker run --rm -v $PWD:/app -w /app java:8 javac tmp.java
docker run --rm -v $PWD:/app -w /app java:8 java tmp
但是,我现在正尝试过渡到使用 dockerode 模块,并尝试按如下方式复制此功能(基于 dockerode github 上的示例):
tmp.class
但是,当我指定Volumes
和选项时,这不会产生任何输出并且不会按预期生成WorkingDir
,当我省略这些选项时,我会收到错误消息:javac: file not found: tmp.java
我认为这意味着我的卷没有正确安装。本质上,我正在尝试创建一个临时微容器,在容器中编译并运行我的 java 程序,然后销毁容器。因此,我无法在我的主机系统上本地安装 JDK 和编译程序,并且必须基本上只在容器内工作。
我目前正在尝试使用命令式 Docker 命令来实现此用例,并且能够使用上面的 cli 命令来完成此操作,但是,我无法使用dockerode
for node 做同样的事情(无论是通过命令式命令还是使用 dockerfile) .
我真的很感激这方面的任何帮助!
javascript - Dockerode 等价于命令
我正在寻找使用 dockerode 在 nodejs 中运行一个等效于以下命令行命令的函数:
docker run --rm -v ${filename}:/docker.py image-name
我不确定如何执行此操作(尤其是如何使用 --rm 和 -v 等标志)。
谢谢!
node.js - Mocha 可以在没有测试文件的情况下执行测试吗?
我正在使用 Mocha 框架运行带有 chai 断言的测试。我有一些不寻常的架构。我有 Node.js 服务器,我在其中使用 dockerode npm 包在服务器接收到某个端点的 POST 请求时动态创建 docker 容器。当这个 docker 容器被创建时,我通过环境变量将需要测试的代码以及测试传递给这个容器。我知道我可以将这些代码和测试写入文件并让 Mocha 在容器内执行这些文件,但这会影响我的性能。所以我想知道是否有解决方案让 Mocha 直接从环境变量中运行这些测试,这些环境变量本质上是字符串?
对此的任何建议将不胜感激。
PS 实施此架构是为了允许并行快速测试执行。我有一个独特的场景,任何时候我们的服务都可以接收数百个需要测试的函数,并且在接收到一个函数后,服务器会创建一个单独的容器来在这个容器内对这个函数执行测试。
docker - Docker 检查包含 ip 更改后的旧 ip 地址
我使用 node.js 应用程序(取决于 apocas 的 dockerode API)创建 docker 容器,其中多个 docker 网络连接到每个容器。默认情况下,每个容器都会为每个网络接口获取一个随机 IP 地址。
示例: ip: 172.18.0.2的 dev-container并连接到接口eth4上的网络demo-net
当我这样做时,docker inspect dev-container
我可以看到网络demo-net已连接到ip 地址为172.18.0.2的容器dev-container(如预期的那样)。
现在我执行dev-container并docker exec -it dev-container /bin/bash
使用ifconfig eth4 192.168.99.169 netmask 255.255.240.0
.
结果:ifconfig
显示新地址192.168.99.169连接到接口 eth4。但是当我docker inspect dev-container
再次执行时,仍然有旧地址172.18.0.2与网络demo-net连接(不是预期的)。
有没有办法让 docker 更新内部网络设置,以便 docker inspect 显示更新的 ip 设置,或者有更好的方法来更改容器的 ip 地址?
(Docker 版本为 19.03.12)
node.js - 使用 Dockerode 将文件复制到 Docker 容器而不归档文件
我可以通过归档文件将文件复制到 docker 容器。
问题是,如果我的代码存储库中有存档文件,那么我的公司安全扫描就会违反。使用 dockerode,是否可以将目录的多个文件复制到 docker 容器中而不归档它们?
docker - 如何使用 dockerode 或 docker api 在多主机群上模拟“docker service ps”?
我正在尝试使用 dockerode 访问 Docker API。
我的目标是获取多节点集群中所有容器的容器数据。
似乎它docker.listContainers( {all: true } )
的范围仅返回在调用节点上运行的容器,在我的例子中是我的管理器节点。
https://docs.docker.com/engine/api/v1.37/#operation/ContainerList
我们如何使用 dockerode 获取 swarm 中所有容器的列表?
我们如何使用 dockerode 获取与服务关联的所有容器的列表?
在命令行中,你可以通过获取容器iddocker service ps <service_name>
来获取容器id,然后调用inspect on container。
即使是调用 dockerode.getContainer(a6b48751780b) 的简单示例也会返回 404。调用 m1x8e2w5dyvr 会返回管理节点上的预期数据。
javascript - Dockerode - 容器的自定义文件夹
从昨天开始,我一直在尝试使用名为“dockerode”的 docker 库在 node.js api 的“文件夹”文件夹中为每个容器创建一个单独的文件夹。不幸的是,我没有找到任何可行的好解决方案。我查看了他们拥有的 Pterodactyl Daemon(旧)源代码,但不幸的是它对我也不起作用。你知道有什么好的解决方案可以很好地工作吗?
如果您需要更多信息,我会在这里为您写。
好好休息一天,多米