【发布时间】:2020-10-02 22:46:19
【问题描述】:
我有一个 docker 映像,其中包含一个包含依赖项的 c++ 可执行文件。这个可执行文件在 docker 环境之外运行良好,我已经对其进行了多次测试。 但是在 docker 内部,它会在启动时立即停止。
为了调试,我在调用 main() 函数后立即添加了 std::cout << "Main 1" << std::endl。但是,当我在 docker 中启动可执行文件时,即使这也没有被打印出来。
有关如何调试此问题的任何提示。
添加用于构建 docker 镜像的 docker 文件。
FROM ubuntu:18.04
# install app dependencies
RUN apt-get -yqq update \
&& apt-get -yqq dist-upgrade \
&& apt-get -yqq install apt-utils libgomp1 libprotobuf10 libboost-thread1.65.1 libboost-filesystem1.65.1 libopencv-core3.2 libopencv-imgproc3.2 libopencv-imgcodecs3.2 libjpeg-turbo8 libpo
&& apt-get -yqq remove systemd cups perl ffmpeg apt-utils \
&& rm -rf /var/lib/apt/lists/*
# create app folder
RUN mkdir -p /opt/aimes
# copy app, dependencies and config
COPY deps/aimes /opt/aimes/
COPY deps/*.* /opt/aimes/
COPY deps/config /opt/aimes/config
# copy wrapper script
COPY run-es.sh /opt/aimes/
# run command
WORKDIR /opt/aimes
ENV LD_LIBRARY_PATH .
ENTRYPOINT ["./run-es.sh"]
【问题讨论】:
-
我可以在 docker 中运行 cat 或 ls -al 之类的命令。我可以看到所有文件。甚至可执行文件上的 ldd 也返回所有链接库,我在该列表中看不到任何
not found。 -
我已经用用于准备 docker 镜像的 Dockerfile 更新了这个问题。
-
查看stackoverflow.com/questions/42029834/…了解如何使用gdb
-
感谢 Alan,帮助我找出问题所在。
-
如果你已经解决了你的问题,你可以回答你自己的问题来帮助其他人