我是Docker的新手,需要一些帮助。我想为c代码制作交互式docker镜像。我已经写了一个小的c代码。以下是我的c代码:
**CODE:**
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,sum=0,n,num[10];
printf("How many integers do you want to enter? ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
sum+=num[i];
}
printf("Total Sum: %d\n",sum);
printf("---------------------\n\n");
return 0;
}
输出:
你想输入多少个整数? 3(用户输入)
1 3 5(用户输入)
**DockerFile code**
File: Dockerfile
FROM debian:latest
RUN mkdir -p /home/arup123/ExtendedAdd
COPY . /home/arup123/ExtendedAdd
CMD /home/arup123/ExtendedAdd/ExtendedAddition
我认为我们可以在当前shell中创建一个像bash shell这样的交互式shell来获取用户输入但是我得到“Segmentation fault(core dumped)”
docker build -t image1 .
docker run -it --name image2 image1 /bin/bash
/# 3
bash: 3: command not found
/# 1 2 3
bash: 1: command not found
/# exit
exit
docker commit image2 myuser/myimage:2.1
# docker run e2807f8b1966(image id of image1)
Segmentation fault (core dumped)
请让我知道我哪里出错了,以及如何纠正错误! - 谢谢你
答案 0 :(得分:1)
首先,最后不要docker run
使用/bin/bash
:这会覆盖Dockerfile中定义的CMD
。
如果您已经构建了图像(请检查docker images
的输出),请使用:
docker run --rm -it --name prg myImage
如果段错误仍然存在,那可能是您的C代码或其编译的问题(确保使用与Docker镜像/ Dockerfile中使用的操作系统类似的操作系统进行编译。