使用golang exec执行docker命令失败

2024-04-12

我正在使用 cmd.go (见下文)执行 docker 命令,但失败了。我执行以下步骤来执行并收到以下错误。

go build
sudo ./cmd

Output:

docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m
2014/10/16 14:32:12 exit status 1

另一方面直接运行

sudo docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m

导致 a.out 的正确输出。

Hello World

这是cmd.go的代码。我怎样才能让它发挥作用?谢谢!

package main

import (
        "fmt"
        "log"
        "os/exec"
        "strings"
)

func ExampleCmd_Output() {
        //out, err := exec.Command("date", "--version").Output()   // This works
        //out, err := exec.Command("docker", "--version").Output() // This works
        //out, err := exec.Command(cmd, "images").Output() // Even docker images command works!

        cmd := "docker"
        cmdArgs := []string{"run", "-v", "~/exp/a.out:/a.out", "ubuntu:14.04", "/a.out", "-m", "10m"}
        fmt.Println(cmd + " " + strings.Join(cmdArgs, " "))
        out, err := exec.Command(cmd, cmdArgs...).Output()
        if err != nil {
                log.Fatal(err)
        }
        fmt.Printf("%s", out)
}

func main() {
        ExampleCmd_Output()
}

编辑:发表评论后,我尝试执行命令“docker images”。如果我用 sudo 运行可执行文件,它就可以工作。也就是说,我现在在代码中使用以下行。

out, err := exec.Command(cmd, "images").Output()

在执行 go build 并运行“sudo ./cmd”之后,我得到了 docker images 命令的输出。但是,如果没有 sudo,我仍然会得到退出状态 1。但是使用上面的 docker run 命令,即使使用 sudo,我也不会得到输出。


谢谢Go 中的 Os Exec Sudo 命令 https://stackoverflow.com/questions/24095661/os-exec-sudo-command-in-go,我现在可以做我想做的事了。

func main() {
  cmdStr := "sudo docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m"
  out, _ := exec.Command("/bin/sh", "-c", cmdStr).Output()  
  fmt.Printf("%s", out)
}

Output:

Hello World
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用golang exec执行docker命令失败 的相关文章

随机推荐

  • 可以使用 OnDeserializedAttribute 代替 IDeserializationCallback 接口吗?

    正如 MSDN 所说here http msdn microsoft com en us library system runtime serialization ondeserializedattribute aspx 它可以 但我花了
  • 与 JPA OneToMany 映射的只读关联

    我有一个与另一个实体关联的事务实体 因此在案例中不应更新关联实体 例如 案例 gt 用户 案例由用户拥有 反之 用户可以拥有许多关联的案例 使用 OneToMany 和 JoinColumn JPA 注释来映射关联 我还尝试将 User 实
  • 如何从外部资源将库连接到智能合约?

    pragma solidity 0 4 15 import ERC20 sol import SafeMath sol 如何连接安全数学 sol来自外部 非本地的 资源 虽然詹姆斯的答案是有效的 但我不建议从在线存储库链接合同的依赖项 这是
  • 如何使用 Spring Security 为特定端点添加 HTTP 基本身份验证?

    我有一个带有 Spring Security 的 Spring Boot 应用程序 一个新的端点 health进行配置 以便可以通过基本 HTTP 身份验证进行访问 目前的HttpSecurity配置如下 Override protecte
  • woocommerce 显示类别/子类别/产品

    有没有办法在 woocommerce 中显示主要类别及其子类别及其产品 php 还是简码 我尝试过一些条件格式 但没有任何结果 您有两个默认的短代码可用于显示产品类别 定义了特定的父类别 以显示子类别 和特定类别中包含的产品 要显示顶级类别
  • 在 Vim 中轻松地将函数参数重新格式化为多行

    特别是在编辑旧版 C 代码时 我经常发现自己手动重新格式化如下内容 SomeObject doSomething firstType argumentOne secondType argumentTwo thirdType argument
  • ejabberd如何编译新模块

    Here http www ejabberd im node 2872我找到了代码 erlc I ejabberd 2 1 13 lib ejabberd 2 1 13 include pa ejabberd 2 1 13 lib ejab
  • 子进程 popen stdout 锁定?

    您好 在使用 subprocess Popen 时 读取标准输出时遇到一些问题 daniel desktop python V Python 2 7 3 这是代码 注释代码是我尝试过的一些事情 import subprocess RUN h
  • 通过浏览器调用WCF服务方法

    我有一个使用基本 http 绑定的 WCF 服务 如何通过浏览器调用其操作 方法 您需要将 WebGetAttribute 添加到您的方法中 如下例所示 OperationContract WebGet UriTemplate places
  • 当我单击搜索按钮时,防止 ProgressDialog 被关闭(Android)

    在长时间运行的操作中 我显示了一个弹出对话框 由ProgressDialog以防止其他操作发生 我已将其设置为不可取消setCancelable false 所以我无法使用后退按钮关闭它 但令人惊讶的是 搜索 硬件按钮会关闭该对话框 更准确
  • 如何确定现有应用程序的安装范围?

    我有一个基于的安装程序WixUI Advanced允许用户选择安装范围 每个用户或机器范围 升级时 安装了较低版本的现有应用程序 我想隐藏安装范围屏幕并自动选择他们上次选择的安装范围 如何判断先前安装使用的安装范围 Edit 查看我的 MS
  • Android 代码从 ContentProvider 类而不是 Main 类开始

    昨天我发布了一个类似的问题 关于为什么我的代码从我的内容提供程序类而不是主类开始 我收到了一些反馈 我已经更新了这些反馈 但问题仍然存在 代码从 ContentProvider 类而不是主类开始班级 我已经使用调试器运行了代码 令人费解的是
  • 从字符串中过滤非数字

    仅使用快速代码 我无法弄清楚如何获取 555 555 5555 并仅返回数值并获得 5555555555 我需要删除所有括号 空格和破折号 我能找到的唯一例子是 Objective C 中的 它们似乎都使用 trim 方法 看起来好像 sw
  • 使用 Apple 登录 - Ionic 3

    我正在尝试使用以下插件和包装器在我的 ionic 3 项目上实现苹果登录 ionic cordova plugin add cordova plugin sign in with apple npm i save ionic native
  • 使用自动布局时如何调整 CALayer 的锚点?

    Note 自从提出这个问题以来 事情已经发生了变化 看here http revealapp com blog constraints and transforms html以获得近期的良好概述 在自动布局之前 您可以通过存储框架 设置锚点
  • 在 Windows 上,使用 cabal 安装的软件包似乎在 ghc/ghci 中不可用

    我在相当标准的 Windows 10 x64 系统上运行最新版本的 Haskell Platform 8 6 3 现在 我正束手无策地从 Hackage 安装软件包以使其可靠地工作 将我的问题归因于本地配置问题 我已采取了所有步骤 但没有破
  • XML 中 setTag(key, value) 的等效项

    我可以使用等价的setTag key 在我的 Android 布局文件中 如下所示
  • 过程需要未提供的参数

    我在访问 SQL Server 中的存储过程时收到错误 Server Error in Application Procedure or function ColumnSeek expects parameter template whic
  • 如何在嵌入式框架中使用 Cocoapods?

    我正在一个新项目中为我的自定义视图使用嵌入式框架 以利用 Xcode 6 中新的 IBDesignable 内容 并且我想使用 Facebook 的 Pop 为所述视图设置动画 我已使用 Cocoapods 将 Pop 添加到项目中 但嵌入
  • 使用golang exec执行docker命令失败

    我正在使用 cmd go 见下文 执行 docker 命令 但失败了 我执行以下步骤来执行并收到以下错误 go build sudo cmd Output docker run v exp a out a out ubuntu 14 04