2017-03-03 2 views
0

요즘에는 Docker에 대해 배우려하고 있지만 아직 명확하지 않은 아이디어가 있습니다. 방금 ​​만든 이미지를 실행하려고했습니다. 여기에 디렉토리가 있습니다.처음부터 도커 컨테이너를 시작할 수 없습니다.

안녕하세요 (디렉토리) :

  • Dockerfile
  • start.sh

그리고 Dockerfile :

FROM scratch 
ADD start.sh /var/ 
CMD ["/var/start.sh"] 

start.sh :

#!/bin/bash 
echo "hello world" 
,

다음과 같이 태그를 지정했습니다 : 도커 빌드 -t mozer/hello.

일단 명령을 실행하면;

docker run mozer/hello 

no such file or directory 
Error response from daemon: Cannot start container f22019aabc81f29fe17e849a2c040902ccadefe6cb8a8fe2612c83fe8eda40ea: [8] System error: no such file or directory 

와 나는 명령을 실행하면 :

docker run mozer/hello /bin/sh -c 
exec: "/bin/sh": stat /bin/sh: no such file or directory 
Error response from daemon: Cannot start container 3b54584092e70b639671aca66122a0b1f6b1e4327cb2471a8792c3b2337b0bcc: [8] System error: exec: "/bin/sh": stat /bin/sh: no such file or directory 

당신이 나에게 해결책을 찾기 위해 몇 가지 아이디어를주지하시기 바랍니다 수 있습니까?

P. : 인터넷에 연결되어 있지 않은 컴퓨터에서 작업하고 있습니다!

답변

1

FROM scratch은 완전히 비어있는 파일 시스템입니다. 설치된 라이브러리가없고 셸 (예 :/bin/sh)이 여기에 포함되어 있지 않습니다. 이것을 기반으로 사용하려면 정적으로 링크 된 바이너리가 필요하거나 리눅스 배포판에 포함 된 모든 일반 도구를 설치해야합니다.

후자는 도커 허브의 다양한 busybox, debian, 우분투, centos 등의 이미지에 미리 패키지되어 있습니다. 최소한의 기본 이미지로 이미지를 빠르게 만들려면 FROM busybox으로 변경하고 /bin/bash/bin/sh으로 변경하십시오.

1

스크래치 이미지는 빈 파일 시스템이므로/bin/sh 안에 없습니다. 건물 컨테이너 시작 포인트로 Creating a simple base image using scratch

당신은 부두 노동자의 예약, 최소한의 이미지, 스크래치를 사용할 수 있습니다에서

봐. 스크래치 "이미지"신호를 사용하여 Dockerfile의 다음 명령을 으로 만들려는 빌드 프로세스가 이미지의 첫 번째 파일 시스템 레이어가됩니다.

실행 가능한 컴파일 된 프로그램을 추가하여 실행할 수 있습니다.

관련 문제