您现在的位置是:首页 > 电脑 > 

使用JavaScript /节点上泊坞窗访问文件

2025-07-22 01:30:55
使用JavaScript /节点上泊坞窗访问文件 有没有办法在执行过程中以编程方式访问容器(码头工人)上的文件。我已经使用节点泊坞窗-API刚刚设置的东西,在一审中,并建立连接的尝试: ct docker = new Docker({ "host": "tcp://docker:port" }); // List docker.container.list() // Ins

使用JavaScript /节点上泊坞窗访问文件

有没有办法在执行过程中以编程方式访问容器(码头工人)上的文件。我已经使用节点泊坞窗-API刚刚设置的东西,在一审中,并建立连接的尝试:

ct docker = new Docker({
    "host": "tcp://docker:port"
});

// List
list()
// Inspect
    .then(containers => containers[0].status())
    .then(container => ())
    .then(processes => cole.log(processes))
    .catch(error => cole.log(error));

其中,“端口”是4位数的端口号。但我收到此错误信息:

{ Error: connect ECOREFUSED 127.0.0.1:80
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1081:14)
  errno: 'ECOREFUSED',
  code: 'ECOREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 80 }

更新:我已经做了类似的东西在Java中与dockerjava使用 -

ExecCreateCmdRespe execCreateResp = (cid).withCmd("bash")
        .withAttachStderr().withAttachStdout().withAttachStdin().withTty(false).exec();

HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");

HttpHijack ws = new HttpHijack(new URI("http://127.0.0.1:276/v1.19/exec/" + execCreateResp.getId() + "/start"));
String payload = "{\"Detach\": false,\"Tty\": false}";
ws.post(headers, payload);

然后复制使用容器中的文件:

try (TarArchiveInputStream tarStream = new TarArchiveInputStream(
    (containerId, "/home/seluser/Downloads/" + fileame).exec())) {
    unTar(tarStream, new File(filePath));
    return;
}catch(otFoundException e){
    e.printStackTrace();
}

但我似乎无法到一种方法来实现上述使用JavaScript /节点

回答如下:

考虑到容器内的文件,是短暂的,你要小心,如果你的代码以某种方式依赖于文件。

最好的做法是使用docker volumes来存储数据。在你的情况,如果你能在一个码头工人卷存储文件,那么你可以从另一个容器中运行你的代码,看到文件从它。因此,容器将共享相同的存储,这不是短暂的,会生存容器重新启动。

如果码头工人卷是不是你的话,那么在我心中的一个想法是Docker REST API,尤其是与Exec方法玩。

使用这种方法,你可以执行Linux的容器中的命令。


更新1:如果你的程序在主机上运行,​​你需要有访问由搬运工人量生成的数据,你也可以绑定主机目录泊坞窗容器内的目录。

举个例子:docker run -v /host/folder:/container/folder <your_image>

这样,在泊坞窗文件夹中的任何变化都会对文件夹在您的主机中反映出来 - 这样你就可以访问它们。

Read more


更新2:你可以使用泊坞REST API在未来的方式执行搬运工人容器内的命令:

  1. 启用对REST API TCP访问:编辑/lib/systemd/system/docker.service和改变下一行:ExecStart=/usr/bin/dockerd -g /data/docker -H fd://ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:275并保存文件。然后systemctl daemon-reloadservice docker restart。现在,你应该能够访问http://127.0.0.1:275的API - 你应该得到{ "message": "page not found" }作为响应。
  2. 使用REST API,例如创建一个exec对象:
curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"AttachStdout": true,"AttachStderr": true,"Cmd": ["date"]}' \
http://127.0.0.1:275/v{dockerVersion}/containers/{containerId}/exec 

这里:

  • dockerVersion - 你的泊坞窗引擎的版本,可以使用docker version命令来获得(参见版FO服务器,在我的情况下,它是1.8 - 所以在URL就会像v1.8不要忘记v
  • containerId - 你在泊坞窗容器的ID,可以通过以下命令检索:curl http://127.0.0.1:275/v{dockerVersion}/containers/json

在回答/containers/{containerId}/exec你应该得到的东西,如:{"Id": "{objectId}"}

  1. 执行先前创建的命令:
curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"Detach": false,"Tty": false}' \
http://127.0.0.1:275/v{dockerVersion}/exec/{objectId}/start

这里:

  • objectId - ID从码头工人API在上一步中返回(步骤2)

作为回应,你应该得到一个纯文本 - 你的命令的输出。

注:在JSO体内的Cmd是一个数组,所以可以指定多个命令。

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/876386.html

相关标签:无
上传时间: 2024-04-14 21:52:21
留言与评论(共有 17 条评论)
本站网友 朝天鼻矫正术
19分钟前 发表
false
本站网友 康萃乐
19分钟前 发表
本站网友 发外链工具
6分钟前 发表
80 at TCPConnectWrap.afterConnect [as oncomplete] (net.js
本站网友 盘龙云海
6分钟前 发表
\"Tty\"
本站网友 nextval
20分钟前 发表
//127.0.0.1
本站网友 卡地亚珠宝展
13分钟前 发表
"application/json"); HttpHijack ws = new HttpHijack(new URI("http
本站网友 健康减肥
4分钟前 发表
使用REST API
本站网友 水产品加工
11分钟前 发表
在我的情况下
本站网友 返利网怎么赢利
26分钟前 发表
1081
本站网友 黑枸杞作用与功效
17分钟前 发表
275的API - 你应该得到{ "message"
本站网友 小金口租房
25分钟前 发表
在泊坞窗文件夹中的任何变化都会对文件夹在您的主机中反映出来 - 这样你就可以访问它们
本站网友 长春房地产
29分钟前 发表
275/v{dockerVersion}/exec/{objectId}/start 这里: objectId - ID从码头工人API在上一步中返回(步骤2) 作为回应
本站网友 我愿化身石桥五百年
17分钟前 发表
是短暂的
本站网友 十三五高铁规划图
15分钟前 发表
true
本站网友 春节假期
20分钟前 发表
//0.0.0.0
本站网友 家具信息网
0秒前 发表
"AttachStderr"