我试图在docker中运行cpp应用程序。构建了executable并创建Dockerfile之后,由于某种原因,我无法在docker内部运行它:

main.cpp

#include<iostream>
#include<chrono>
#include<thread>
#include<string>
#include <unistd.h>

int main(int argc,char *argv[])
{
    std::cout<<"Started daemon..."<<std::endl;
    std::string hostString(argv[1]);
    std::cout<<"HostName:"<<hostString<<std::endl;
    std::cout<<"Port:"<<std::stoi(argv[2])<<std::endl;
    int i=0;
    while(true){
      std::cout<<"Iterations:"<<i++<<std::endl;
      std::this_thread::sleep_for (std::chrono::seconds(1));
      if(i++>10000) i=0;
    }
    return 0;
}

Dockerfile
FROM  ubuntu:latest
RUN mkdir -p /home/dockerc
COPY . /home/dockerc
ENTRYPOINT ["/home/dockerc/main","127.0.0.1","8350"]

dockerc文件夹
  • main.cpp
  • main.exe
  • Dockerfile

  • 我运行以下命令:g++ main main.cpp docker build app . docker images(显示app图像已创建)
    docker run app
    构建成功,但是当我按下run时看起来像是被阻止了。

    c&#43;&#43; - Docker无法启动cpp应用程序-LMLPHP

    怎么了?有人可以帮我吗?我是Docker的新手。

    P.S 在等待大约10分钟后,我收到一则长错误消息,其开头为以下内容:
    $ docker run cpapp
    C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container a575e463f193dbc475aab78c1810486e23981a50c                                                           0b731f9c891c4143d0ed5b3 encountered an error during CreateProcess: failure in a Windows system call: The compute system exited unexpecte                                                                                                                                       dly. (0xc0370106)
    

    最佳答案

    您应将完整路径放在ENTRYPOINT中,并将参数添加到程序中。

    这个Dockerfile可以完成这项工作:

    FROM  ubuntu:latest
    RUN mkdir -p /home/dockerc
    COPY . /home/dockerc
    ENTRYPOINT ["/home/dockerc/main", "hostname", "8000"]
    

    hostname8000替换为所需的主机名和端口。

    编辑

    我在Linux上测试了您的程序,并且要使其运行,我必须:

    1)为c++ 11编译(由于chrono)

    2)添加-t以构建docker应用

    这是要运行的命令的完整列表:
    g++ -o main main.cpp -std=c++11
    docker build -t app .
    docker run app
    

    这是输出:

    c&#43;&#43; - Docker无法启动cpp应用程序-LMLPHP

    关于c++ - Docker无法启动cpp应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52410006/

    10-16 08:39