【问题标题】:How to execute a docker-run command from C++ program?如何从 C++ 程序执行 docker-run 命令?
【发布时间】:2019-07-29 21:08:00
【问题描述】:

我想从 C++ 程序执行“docker run -it Image_name”。有什么方法可以实现吗?

【问题讨论】:

  • 产卵过程是一个复杂的主题。它也往往是特定于平台的。如果您想与子进程并行运行或读取其输出,则尤其如此。如果您可以运行 docker,而不是读取它的输出并等待它,请查看 Windows 和 UNIX 都支持的 system 库函数。
  • 还要考虑到docker run 可以非常容易地用于接管系统,因此经常需要root 权限才能运行。如果可能的话,我会尽量避免这条路。

标签: c++ docker system docker-run


【解决方案1】:

尝试使用 C++ 的简单系统命令。

System("docker run -it Image_name")

【讨论】:

    【解决方案2】:

    我可以想出两种方法来实现这一点。

    对于一种快速而简单的方法,您实际上可以从您的 C++ 代码中运行命令。似乎有几种方法可以使用 C++ 运行命令,但如果您只想运行命令,system() 函数似乎是一种简单的方法:

    int main() {
        system("docker run -it Image_name");
    }
    

    请记住,您需要确保 docker 可执行文件在您的 PATH 环境变量中。您还需要考虑要支持哪些操作系统,Linux 中的系统调用可能与 Windows 中的不同。正确进行系统调用可能很棘手。

    对于另一种方法,直接使用 docker 引擎的 API。 docker 命令发送到此 API。您可以自己直接连接到此 API 并以与 docker run -it Image_name 命令相同的方式调用 API。引擎 API 记录在此处 https://docs.docker.com/engine/api/v1.24/ 。我相信docker run -it Image_name 命令会启动API 调用的"service"

    shell 命令将是最简单的方法。引擎 API 方法会在前期花费更多的精力,但会产生更干净、更健壮的代码。正确的方法取决于您的情况。

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      相关资源
      最近更新 更多