기본 이미지 란 무엇입니까?
파일 세트, EXPOSE
'd 포트 ENTRYPOINT
및 CMD
. 지시문
으로 새로 Dockerfile
시작하여 파일을 추가하고 해당 기본 이미지를 기반으로 새 이미지를 빌드 할 수 있습니다 FROM
. 다음에 언급 된 이미지 FROM
는 새 이미지의 "기본 이미지"입니다.
지시문 neo4j/neo4j
에서 선언 FROM
하면 이미지가 실행될 때 neo 데이터베이스가 자동으로 실행되고 포트 7474의 컨테이너 내에서 사용할 수 있다는 의미입니까?
덮어 쓰지 않는 경우에만 CMD
및 ENTRYPOINT
.
그러나 이미지 자체만으로도 충분 합니다. 특정 용도로 FROM neo4j/neo4j
관련된 파일을 추가해야하는 경우 .neo4j
neo4j
FROM
단일 Dockerfile 내에서 여러 번 나타날 수 있습니다.
하지마: 어쨌든 해당 "기능"을 제거하라는 제안이 있음 ( 문제 13026 )
문제 14412에 언급 된 내용 :
다중을 사용하는 FROM
것은 실제로 기능이 아니지만 버그입니다 (오, 제한이 엄격하고 FROM
Dockerfile에서 다중 사용 사례가 거의 없습니다).
2017 년 5 월 (18 개월 후) 업데이트, docker (moby) 17.05-ce .
단일 Dockerfile에서 여러 FROM을 사용할 수 있습니다.
" Builder 패턴 vs. Docker의 다단계 빌드 "( Alex Ellis 작성 ) 및 Tõnis Tiigi의 PR 31257 을 참조하십시오 .
전에:
빌더 패턴에는 두 개의 Docker 이미지 사용이 포함됩니다. 하나는 빌드를 수행하고 다른 하나는 첫 번째 이미지의 빌드 체인 및 도구의 패널티없이 첫 번째 빌드의 결과를 제공합니다.
후:
일반 구문에는 FROM
Dockerfile 내에 추가 시간을 추가하는 것이 포함됩니다 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
FROM
A의Dockerfile
. 아래에서 수정 된 답변을 참조하십시오.