运行 C/C++ 作为 docker 容器的二进制可执行文件

Running C/C++ binary executable as a docker container

我是容器世界的新手,正在探索 运行 我在 container.Here 上的应用程序的选项是我所看到的:

  1. 当我将编译和构建 C/C++ 二进制文件作为 docker 图像本身的一部分时,它工作正常,没有任何问题。容器启动,一切正常。

  2. 如果我尝试在容器中使用 CMD ["./helloworld"] 运行 一个已经编译的现有二进制文件,它会抛出这个错误 standard_init_linux.go:185: exec 用户进程导致“exec 格式错误”。

关于如何摆脱这个问题的任何想法?这似乎是一个本来可以解决的基本问题

这是我的docker文件:

从ubuntu

COPY . /Users/test//Documents/CPP-Projects/HelloWorld-Static

WORKDIR /Users/test/Documents/CPP-Projects/HelloWorld-Static

CMD ["./build/exe/hellostatic/hellostatic"]

她的是我的 exe:

gobjdump -a build/exe/hellostatic/hellostatic

build/exe/hellostatic/hellostatic: file format mach-o-x86-64

build/exe/hellostatic/hellostatic

这里是错误:

docker run test

standard_init_linux.go:185: exec user process caused “exec format error”

问题是您正在尝试 运行 容器中的不兼容二进制格式...

你正在 运行ning 一个基于 Ubuntu 的容器(FROM ubuntu)行,但你正在尝试 运行 一个 Mach-O 二进制文件.默认情况下,Linux 不会 运行 mach-o 二进制文件。

为目标平台 (Ubuntu/Linux) 构建二进制文件,它将运行良好。看来你是 运行ning Mac OS X,所以你可以安装一个 Ubuntu VM 来编译你的二进制文件并将其传输给容器使用。

当您在容器内构建它时,它会起作用,因为它将构建到正确的平台。