IT TIP

다중 FROM-의미

itqueen 2020. 10. 24. 12:11
반응형

다중 FROM-의미


Neo4j 데이터베이스와 Node.js를 모두 실행해야하는 github Linkurious 프로젝트에 대한 도커 이미지를 빌드하고 싶습니다 .

내 첫 번째 접근 방식은 Neo4j를 포함하는 내 이미지의 기본 이미지를 선언하는 것이 었습니다. 참조 문서는 유용한 방식으로 "기본 이미지"를 정의하지 않습니다.

기본 이미지 : 상위가없는 이미지는 기본 이미지입니다.

그 이미지 자체에 기본 이미지가없는 경우 기본 이미지 만 가질 수 있다는 것을 읽었습니다.

그러나 기본 이미지는 무엇입니까? FROM 지시문에서 neo4j / neo4j를 선언하면 이미지가 실행될 때 neo 데이터베이스가 자동으로 실행되고 포트 7474의 컨테이너 내에서 사용할 수 있다는 의미입니까?

Docker 참조 읽기 ( https://docs.docker.com/reference/builder/#from 참조 ) 다음을 참조하십시오.

FROM은 여러 이미지를 만들기 위해 단일 Dockerfile 내에 여러 번 나타날 수 있습니다. 각각의 새로운 FROM 명령 이전에 커밋에 의해 출력 된 마지막 이미지 ID를 기록해 두십시오.

여러 이미지를 만들고 싶습니까? 내가 원하는 것은 neo4j 및 node.js와 같은 다른 이미지의 내용을 포함하는 단일 이미지를 갖는 것입니다.

참조 매뉴얼에서 종속성을 선언하는 지시문을 찾지 못했습니다. 내 이미지를 실행하기 위해 호출 컨텍스트가 먼저 필요한 이미지를 설치해야하는 RPM과 같은 종속성이 없습니까?

헷갈리네요 ...


기본 이미지 란 무엇입니까?

파일 세트, EXPOSE'd 포트 ENTRYPOINTCMD. 지시문
으로 새로 Dockerfile시작하여 파일을 추가하고 해당 기본 이미지를 기반으로 새 이미지를 빌드 할 수 있습니다 FROM. 다음에 언급 된 이미지 FROM는 새 이미지의 "기본 이미지"입니다.

지시문 neo4j/neo4j에서 선언 FROM하면 이미지가 실행될 때 neo 데이터베이스가 자동으로 실행되고 포트 7474의 컨테이너 내에서 사용할 수 있다는 의미입니까?

덮어 쓰지 않는 경우에만 CMDENTRYPOINT.
그러나 이미지 자체만으로도 충분 합니다. 특정 용도로 FROM neo4j/neo4j관련된 파일을 추가해야하는 경우 .neo4jneo4j

FROM 단일 Dockerfile 내에서 여러 번 나타날 수 있습니다.

하지마: 어쨌든 해당 "기능"을 제거하라는 제안이 있습니다 ( 문제 13026 ).

문제 14412에 언급 된 내용 :

다중 사용 FROM은 실제로 기능이 아니지만 버그입니다 (오, 제한이 엄격하고 FROMDockerfile에서 다중 사용 사례가 거의 없습니다).


2017 년 5 월 (18 개월 후), docker (moby) 17.05-ce로 업데이트 합니다.

단일 Dockerfile에서 여러 FROM을 사용할 수 있습니다.
" Builder 패턴 vs. Docker의 다단계 빌드 "( Alex Ellis 작성 ) 및 Tõnis Tiigi의 PR 31257참조하십시오 .

전에:

빌더 패턴에는 두 개의 Docker 이미지 사용이 포함됩니다. 하나는 빌드를 수행하고 다른 하나는 첫 번째 이미지의 빌드 체인 및 도구에 대한 패널티없이 첫 번째 빌드의 결과를 제공합니다.

후:

일반 구문에는 FROMDockerfile 내에 추가 시간을 추가하는 것이 포함됩니다 FROM.이 중 마지막 문이 최종 기본 이미지입니다. 중간 이미지에서 아티팩트 및 출력을 복사하려면 COPY --from=<base_image_number>.

Dockerfile의 첫 번째 부분 :

FROM golang:1.7.3 as builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go    .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

동일한 (!) Dockerfile 의 두 번째 부분 :

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app    .
CMD ["./app"]  

결과는 두 개의 이미지, 하나는 빌드 용이고 하나는 결과 앱만 포함됩니다 (훨씬 작음).

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

multi               latest              bcbbf69a9b59        6 minutes ago       10.3MB  
golang              1.7.3               ef15416724f6        4 months ago        672MB  

참고 URL : https://stackoverflow.com/questions/33322103/multiple-froms-what-it-means

반응형