javascript - 使用 node-docker-api 时出现错误 : connect ENOENT/var/run/docker. sock

标签 javascript node.js docker docker-api

我一直在尝试从我的 Node.js 应用程序调用 docker,为此我使用了 node-docker-api,如 npm 模块文档中所述 https://github.com/AgustinCB/docker-api .为了测试我是否能够从 Node.js 与 docker 进行交互,我正在运行一个小型示例应用程序,该应用程序在文档中作为示例给出。但是我得到的错误是 { Error: connect ENOENT/var/run/docker.sock。完整的错误信息如下所示

dockerOperations.js:

'use strict';
const {Docker} = require('node-docker-api');
var Q = require('q');


var service = {}
service.runDockerCommand = runDockerCommand;
    function runDockerCommand() {
      console.log('inside runDockerCommand');
      var deferred = Q.defer();
      const docker = new Docker({ socketPath: '/var/run/docker.sock' });
      console.log(docker);

      docker.container.create({
        Image: 'ubuntu',
        name: 'test'
      })
        .then(container => container.start())
        .then(container => container.stop())
        .then(container => container.restart())
        .then(container => container.delete({ force: true }))
        .catch(error => console.log(error));

        return deferred.promise;
    }

错误

{ Error: connect ENOENT /var/run/docker.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1170:14)

errno: 'ENOENT', 代码:'ENOENT', 系统调用:'连接', 地址:'/var/run/docker.sock'

最佳答案

我刚刚遇到了同样的问题。为了解决它,您需要将主机的 docker 套接字挂载到容器的一个卷中。这应该允许您的脚本访问它以触发容器。我个人使用 Docker Compose,这是我如何使用它的示例,请参见 volumes 行:

version: "3.1"
services:
    graphql:
        container_name: mobydq-graphql
        restart: always
        image: mobydq-graphql
        build:
            context: ./graphql
        volumes:
            - //var/run/docker.sock:/var/run/docker.sock
        env_file:
            - ./.env
        depends_on:
            - db
        networks:
            - network
        command:
            [some command...]

关于javascript - 使用 node-docker-api 时出现错误 : connect ENOENT/var/run/docker. sock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868281/

相关文章:

javascript - Select 元素的 onChange 之后在 Javascript 上使用旧值和新值

node.js - 从一个 docker 镜像运行多个服务器

mysql - 检查对象是否存在时, Node Sequelize 抛出未定义的错误

java - Docker 镜像构建,但不运行

JavaScript 在 span 元素上循环,检查它们的值并替换其他节点 border-color

javascript - 带有 request-json 的多个 get 请求无法在 Node js 中使用异步正确执行

javascript - document.getElementsByClassName ('name' ) 的长度为 0

javascript - 从 JSON 格式的 'description' 动态定义 Mongoose 模式

share - 如何在构建期间将主机卷挂载到 Dockerfile 中的 docker 容器中

asp.net - .NET ASP Core Docker 容器中的 Sqlite 数据库为空