ベースイメージとは
一連のファイル、およびEXPOSE
'dポート、ENTRYPOINT
およびCMD
。
ファイルを追加し、そのベースイメージに基づいて新しいイメージを構築できます。ディレクティブでDockerfile
始まる新しいイメージを使用できます。以下で説明するイメージは、新しいイメージの「ベースイメージ」です。FROM
FROM
ディレクティブで宣言neo4j/neo4j
したFROM
場合、イメージが実行されると、neoデータベースが自動的に実行され、ポート7474のコンテナー内で使用できるという意味ですか?
CMD
とを上書きしない場合のみENTRYPOINT
。
ただし、画像自体で十分です。特定のの使用にFROM neo4j/neo4j
関連するファイルを追加する必要がある場合は、aを使用neo4j
しますneo4j
。
FROM
単一のDockerfile内で複数回出現できます
しない:とにかくその「機能」を削除する提案があります(問題13026)
問題14412は次のように述べています:
複数を使用することFROM
は実際には機能ではなくバグです(まあ、制限は厳しくFROM
、Dockerfile での複数の使用例はほとんどありません)。
2017年5月(18か月後)、docker(moby)17.05-ceで更新します。
1つのDockerfileで複数のFROM を使用できます。
「Dockerでのビルダーパターンとマルチステージビルド」(Alex Ellisによる)およびTõnisTiigiによるPR 31257を参照してください。
前:
ビルダーパターンでは、2つのDockerイメージを使用します。1つはビルドを実行し、もう1つは最初のビルドの結果を、最初のイメージのビルドチェーンとツールのペナルティなしで出荷します。
後:
一般的な構文では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の2番目の部分:
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"]
結果は、2枚の画像、建物のための1つだけ有するもの得られたアプリであろう(はるかに、はるかに小さいです)
REPOSITORY TAG IMAGE ID CREATED SIZE
multi latest bcbbf69a9b59 6 minutes ago 10.3MB
golang 1.7.3 ef15416724f6 4 months ago 672MB
FROM
れるようになりましたDockerfile
。以下の私の編集した回答を参照してください。