创建交互式泊坞窗图像

时间:2018-06-14 06:43:12

标签: docker unix debian dockerfile docker-image

我是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(用户输入)

总和:9

**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)

请让我知道我哪里出错了,以及如何纠正错误! - 谢谢你

1 个答案:

答案 0 :(得分:1)

首先,最后不要docker run使用/bin/bash:这会覆盖Dockerfile中定义的CMD

如果您已经构建了图像(请检查docker images的输出),请使用:

docker run --rm -it --name prg myImage

如果段错误仍然存​​在,那可能是您的C代码或其编译的问题(确保使用与Docker镜像/ Dockerfile中使用的操作系统类似的操作系统进行编译。