Dockerfile
Docker Format
# Comment
INSTRUCTION argumentsλͺ λ Ήμ΄λ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ΅λλ€. κ·Έλ¬λ κ΄λ‘λ μΈμμ λ μ½κ² ꡬλ³νκΈ° μν΄ λλ¬Έμλ‘ μ§μ νλ κ²μ λλ€.
Dockerfileλ 무쑰건
FROMλͺ λ Ήμ΄λ‘ μμν΄μΌ νλ€.μ΄κ²μ
parserdirectives,comments, μ μ μARGsλ€μ μμ μ μλ€.FROMλͺ λ Ήμ΄λ λΉλ©νλ €κ³ νλParent Imageλ₯Ό μ§μ νλ€FROMμμλ Dockerfile μ FROM νμ μ¬μ©νλ μΈμλ₯Ό μ μΈνλ νλ μ΄μμARGλͺ λ Ήμ΄λ§ μ¬ μ μλ€.Dockerλ
#μΌλ‘ μμνλ μ€μ΄Parser directivesμ΄ μλλ©΄μ£ΌμμΌλ‘ μ²λ¦¬νλ€.
# Comment
RUN echo 'we are running some # of cool things'Parser directives
Parser directivesμ μ ν μ¬νμ΄λ©° Dockerfileμ νμ λΌμΈμ΄ μ²λ¦¬λλ λ°©μμ μν₯μ μ€λ€.
Parser directivesμ # directive=value νμμ νΉμ μ νμ μ£ΌμμΌλ‘ μμ±λ©λλ€. λ¨μΌ μ§μλ¬Έμ ν λ²λ§ μ¬μ©ν μ μμ΅λλ€.
μ£Όμ, λΉ μ€ λλ λΉλ λͺ
λ Ήμ΄ μ²λ¦¬λλ©΄ Dockerλ λ μ΄μ Parser directivesμ μ°Ύμ§ μμ΅λλ€.λ°λΌμ λͺ¨λ νμ μ§μλ¬Έμ Dockerfileμ 맨 μμ μμ΄μΌ ν©λλ€.
Invalid due to appearing twice:
Parser directivesμ΄ μλ μ£Όμ λ€μ μμΌλ©΄ μ£ΌμμΌλ‘ μ²λ¦¬λ©λλ€.
Parser directivesμ΄ μλ μ£Όμ λ€μ μμΌλ©΄ μ£ΌμμΌλ‘ μ²λ¦¬λ©λλ€.The following parser directives are supported:
syntax
μ΄ κΈ°λ₯μ BuildKit λ°±μλλ₯Ό μ¬μ©ν λλ§ μ¬μ©ν μ μμΌλ©° ν΄λμ λΉλ λ°±μλλ₯Ό μ¬μ©ν λλ 무μλ©λλ€.
BuildKitμ λ κ±°μ λΉλλ₯Ό λ체νκΈ° μν΄ κ°μ λ λ°±μλμ λλ€. BuildKitμ λ²μ 23.0λΆν° Docker Desktop λ° Docker Engine μ¬μ©μλ₯Ό μν κΈ°λ³Έ λΉλμ λλ€.
escape
escape μ§μλ¬Έμ Dockerfileμμ λ¬Έμλ₯Ό escapeνλ λ° μ¬μ©λλ λ¬Έμλ₯Ό μ€μ ν©λλ€. μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έ μ΄μ€μΌμ΄ν λ¬Έμλ \μ
λλ€.
Environment replacement
νκ²½ λ³μ(ENV λ¬ΈμΌλ‘ μ μΈλ¨)λ νΉμ λͺ
λ Ήμμ Dockerfileμμ λ³μλ‘ μ¬μ©λ μλ μμ΅λλ€.
νκ²½ λ³μλ Dockerfileμμ $variable_name λλ ${variable_name}μΌλ‘ νμλ©λλ€.
${variable_name} syntaxμ μλμ μ§μ λ λͺ κ°μ§ νμ€ bash μμ μλ μ§μν©λλ€.
${variable_name} syntaxμ μλμ μ§μ λ λͺ κ°μ§ νμ€ bash μμ μλ μ§μν©λλ€.${variable:-word}λ λ³μκ° μ€μ λλ©΄ κ²°κ³Όκ° ν΄λΉ κ°μ΄ λ¨μ λνλ λλ€. λ³μκ° μ€μ λμ§ μμΌλ©΄ λ¨μ΄κ° κ²°κ³Όκ° λ©λλ€.${variable:+word}λ λ³μκ° μ€μ λλ©΄ λ¨μ΄κ° κ²°κ³Όκ° λκ³ , κ·Έλ μ§ μμΌλ©΄ κ²°κ³Όλ λΉ λ¬Έμμ΄μμ λνλ λλ€
νκ²½ λ³μλ Dockerfileμ λ€μ μ§μλ¬Έ λͺ©λ‘μμ μ§μνλ€
ADDCOPYENVEXPOSEFROMLABELSTOPSIGNALUSERVOLUMEWORKDIRONBUILD(when combined with one of the supported instructions above)
.dockerignore
docker CLIλ 컨ν μ€νΈλ₯Ό docker λ°λͺ¬μΌλ‘ 보λ΄κΈ° μ μ 컨ν μ€νΈμ λ£¨νΈ λλ ν°λ¦¬μμ .dockerignoreλΌλ νμΌμ μ°Ύμ΅λλ€.
FROM
Or
Or
FROM λͺ λ Ήμ΄λ μ λΉλ λ¨κ³λ₯Ό μ΄κΈ°ννκ³ νμ λͺ λ Ήμ΄μ λν κΈ°λ³Έ μ΄λ―Έμ§λ₯Ό μ€μ ν©λλ€.
optional --platform νλκ·Έλ FROMμ΄ λ€μ€ νλ«νΌ μ΄λ―Έμ§λ₯Ό μ°Έμ‘°νλ κ²½μ° μ΄λ―Έμ§μ νλ«νΌμ μ§μ νλ λ° μ¬μ©ν μ μμ΅λλ€. μ: linux/amd64, linux/arm64 λλ windows/amd64
RUN
RUNμ 2κ°μ§ νν
RUN <command>(shellform, the command is run in a shell, which by default is/bin/sh -con Linux orcmd /S /Con Windows)
RUN ["executable", "param1", "param2"](exec form)
RUN --mount
RUN --mountλ₯Ό μ¬μ©νλ©΄ λΉλκ° μ‘μΈμ€ν μ μλ νμΌ μμ€ν
λ§μ΄νΈλ₯Ό λ§λ€ μ μμ΅λλ€. λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
νΈμ€νΈ νμΌ μμ€ν λλ κΈ°ν λΉλ λ¨κ³μ λ°μΈλ λ§μ΄νΈ μμ±
λΉλ λΉλ° λλ ssh-agent μμΌμ μ‘μΈμ€
μꡬ ν¨ν€μ§ κ΄λ¦¬ μΊμλ₯Ό μ¬μ©νμ¬ λΉλ μλ ν₯μ
Mount types
bind (default)
λ°μΈλ λ§μ΄νΈ 컨ν μ€νΈ λλ ν 리(μ½κΈ° μ μ©)
cache
μ»΄νμΌλ¬ λ° ν¨ν€μ§ κ΄λ¦¬μλ₯Ό μν μΊμ λλ ν°λ¦¬μ μμ λλ ν°λ¦¬λ₯Ό λ§μ΄νΈν©λλ€.
secret
λΉλ 컨ν μ΄λκ° κ°μΈ ν€μ κ°μ 보μ νμΌμ μ΄λ―Έμ§μ κ΅½μ§ μκ³ μ‘μΈμ€νλλ‘ νμ©
ssh
λΉλ 컨ν μ΄λκ° μνΈλ₯Ό μ§μνλ SSH μμ΄μ νΈλ₯Ό ν΅ν΄ SSH ν€μ μ‘μΈμ€νλλ‘ νμ©ν©λλ€.
RUN --network
Network types
default (default)
κΈ°λ³Έ λ€νΈμν¬μμ μ€ν
none
λ€νΈμν¬ μ‘μΈμ€ μμ΄ μ€ν
host
νΈμ€νΈμ λ€νΈμν¬ νκ²½μμ μ€νν©λλ€
CMD
CMD λͺ
λ Ήμλ μΈ κ°μ§ νμμ΄ μμ΅λλ€
CMD ["executable","param1","param2"](exec form, this is the preferred form)CMD ["param1","param2"](as default parameters to ENTRYPOINT)CMD command param1 param2(shell form)
CMDμ μ£Όμ λͺ©μ μ μ€ν μ€μΈ 컨ν
μ΄λμ κΈ°λ³Έκ°μ μ 곡νλ κ²μ
λλ€
RUNμ μ΄λ―Έμ§ λΉλ λ¨κ³μμ μ€νλλ λͺ λ Ήμ΄μ΄κ³ , CMDλ 컨ν μ΄λ μ€ν λ¨κ³μμ μ€νλλ κΈ°λ³Έ λͺ λ Ήμ΄μ λλ€.
LABEL
LABEL λͺ λ Ήμ΄λ μ΄λ―Έμ§μ λ©νλ°μ΄ν°λ₯Ό μΆκ°ν©λλ€. LABELμ ν€-κ° μμ λλ€.
EXPOSE
EXPOSE λͺ
λ Ήμ΄λ 컨ν
μ΄λκ° λ°νμ μ μ§μ λ λ€νΈμν¬ ν¬νΈμμ μμ λκΈ°ν¨μ Dockerμ μ립λλ€. ν¬νΈκ° TCP λλ UDPμμ μμ νλμ§ μ¬λΆλ₯Ό μ§μ ν μ μμΌλ©° νλ‘ν μ½μ΄ μ§μ λμ§ μμ κ²½μ° κΈ°λ³Έκ°μ TCPμ
λλ€.
ENV
ENV λͺ λ Ήμ νκ²½ λ³μλ₯Ό κ°μΌλ‘ μ€μ ν©λλ€.
ADD
ADDμλ λ κ°μ§ νμ
ADD λͺ
λ Ήμ <src>μμ μ νμΌ, λλ ν°λ¦¬ λλ μ격 νμΌ URLμ 볡μ¬νμ¬ <dest>κ²½λ‘μ μλ μ΄λ―Έμ§μ νμΌ μμ€ν
μ μΆκ°ν©λλ€.
COPY
COPY --link
COPY λλ ADD λͺ λ Ήμμ μ΄ νλκ·Έλ₯Ό νμ±ννλ©΄ νμΌμ΄ μ체 λ μ΄μ΄μμ λ 립μ μΌλ‘ μ μ§λκ³ μ΄μ λ μ΄μ΄μ λͺ λ Ήμ΄ λ³κ²½λ λ 무ν¨νλμ§ μλ ν₯μλ μλ―Έλ‘ νμΌμ 볡μ¬ν μ μμ΅λλ€.
--link μ¬μ©μ μ΄μ
μ΄μ λ μ΄μ΄κ° λ³κ²½λ κ²½μ°μλ --cache-fromμ μ¬μ©νμ¬ νμ λΉλμμ μ΄λ―Έ λΉλλ λ μ΄μ΄λ₯Ό μ¬μ¬μ©νλ €λ©΄ --linkλ₯Ό μ¬μ©νλ€
ENTRYPOINT
ENTRYPOINT λ κ°μ§ νμ
The exec form, which is the preferred form:
The shell form:
ENTRYPOINTλ₯Ό μ¬μ©νλ©΄ μ€ν νμΌλ‘ μ€νλ 컨ν
μ΄λλ₯Ό ꡬμ±ν μ μμ΅λλ€.
CMD λ° ENTRYPOINT λͺ λ Ήμ λͺ¨λ 컨ν μ΄λλ₯Ό μ€νν λ μ€νλλ λͺ λ Ήμ μ μν©λλ€. κ·Έλ€μ νλ ₯μ μ€λͺ νλ κ·μΉ.
Dockerfileμ CMD λλ ENTRYPOINT λͺ λ Ή μ€ νλ μ΄μμ μ§μ ν΄μΌ ν©λλ€.
컨ν μ΄λλ₯Ό μ€ν νμΌλ‘ μ¬μ©ν λ ENTRYPOINTλ₯Ό μ μν΄μΌ ν©λλ€.
CMDλ ENTRYPOINT λͺ λ Ήμ λν κΈ°λ³Έ μΈμλ₯Ό μ μνκ±°λ 컨ν μ΄λμμ μμ λͺ λ Ήμ μ€ννκΈ° μν λ°©λ²μΌλ‘ μ¬μ©ν΄μΌ ν©λλ€.
CMDλ λ체 μΈμλ‘ μ»¨ν μ΄λλ₯Ό μ€νν λ μ¬μ μλ©λλ€.
VOLUME
VOLUME λͺ
λ Ήμ μ§μ λ μ΄λ¦μΌλ‘ λ§μ΄νΈ μ§μ μ μμ±νκ³ κΈ°λ³Έ νΈμ€νΈ λλ λ€λ₯Έ 컨ν
μ΄λμμ μΈλΆ λ§μ΄νΈλ λ³Όλ₯¨μ 보μ νλ κ²μΌλ‘ νμν©λλ€.
USER
USER λͺ λ Ήμ μ¬μ©μ μ΄λ¦(λλ UID) λ° μ νμ μΌλ‘ νμ¬ λ¨κ³μ λλ¨Έμ§ λΆλΆμ λν΄ κΈ°λ³Έ μ¬μ©μ λ° κ·Έλ£ΉμΌλ‘ μ¬μ©ν μ¬μ©μ κ·Έλ£Ή(λλ GID)μ μ€μ ν©λλ€.
WORKDIR
WORKDIR λͺ λ Ήμ΄λ Dockerfileμμ λ€μ μ€λ RUN, CMD, ENTRYPOINT, COPY λ° ADD λͺ λ Ήμ΄μ λν μμ λλ ν°λ¦¬λ₯Ό μ€μ ν©λλ€.
ARG
ARG λͺ λ Ήμ΄λ μ¬μ©μκ° --build-arg <varname>=<value> νλκ·Έλ₯Ό μ¬μ©νμ¬ docker build λͺ λ ΉμΌλ‘ λΉλ μ λΉλμ μ λ¬ν μ μλ λ³μλ₯Ό μ μν©λλ€.
ONBUILD
ONBUILD λͺ λ Ήμ μ΄λ―Έμ§κ° λ€λ₯Έ λΉλμ κΈ°λ°μΌλ‘ μ¬μ©λ λ λμ€μ μ€νν νΈλ¦¬κ±° λͺ λ Ήμ μ΄λ―Έμ§μ μΆκ°ν©λλ€.
μλ λ°©μμ λ€μκ³Ό κ°μ΅λλ€
ONBUILDλͺ λ Ήμ λ§λλ©΄ λΉλλ λΉλ μ€μΈ μ΄λ―Έμ§μ λ©νλ°μ΄ν°μ νΈλ¦¬κ±°λ₯Ό μΆκ°ν©λλ€. λͺ λ Ήμ νμ¬ λΉλμ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.λΉλκ° λλλ©΄ λͺ¨λ νΈλ¦¬κ±° λͺ©λ‘μ΄ μ΄λ―Έμ§ λ§€λνμ€νΈμ
OnBuildν€ μλμ μ μ₯λ©λλ€.docker inspectλͺ λ ΉμΌλ‘ κ²μ¬ν μ μμ΅λλ€.λμ€μ
FROMλͺ λ Ήμ μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό μ λΉλμ κΈ°λ°μΌλ‘ μ¬μ©ν μ μμ΅λλ€.FROMλͺ λ Ή μ²λ¦¬μ μΌλΆλ‘ λ€μ΄μ€νΈλ¦Ό λΉλλONBUILDνΈλ¦¬κ±°λ₯Ό μ°Ύκ³ λ±λ‘λ μμλλ‘ μ€νν©λλ€. νΈλ¦¬κ±° μ€ νλλΌλ μ€ν¨νλ©΄FROMλͺ λ Ήμ΄ μ€λ¨λμ΄ λΉλκ° μ€ν¨ν©λλ€. λͺ¨λ νΈλ¦¬κ±°κ° μ±κ³΅νλ©΄FROMλͺ λ Ήμ΄ μλ£λκ³ νμλλ‘ λΉλκ° κ³μλ©λλ€.νΈλ¦¬κ±°λ μ€ν ν μ΅μ’ μ΄λ―Έμ§μμ μ§μμ§λλ€. μ¦, "μμ" λΉλμ μν΄ μμλμ§ μμ΅λλ€.
STOPSIGNAL
STOPSIGNAL λͺ
λ Ήμ μ’
λ£νκΈ° μν΄ μ»¨ν
μ΄λλ‘ μ μ‘λ μμ€ν
νΈμΆ μ νΈλ₯Ό μ€μ ν©λλ€.
HEALTHCHECK
HEALTHCHECK λͺ λ Ήμ λ κ°μ§ νμ
HEALTHCHECK [OPTIONS] CMDλͺ λ Ή(컨ν μ΄λ λ΄λΆμμ λͺ λ Ήμ μ€ννμ¬ μ»¨ν μ΄λ μν νμΈ)HEALTHCHECK NONE(κΈ°λ³Έ μ΄λ―Έμ§μμ μμλ λͺ¨λ μν νμΈ λΉνμ±ν)
SHELL
SHELL λͺ
λ Ήμ μ¬μ©νλ©΄ λͺ
λ Ήμ μ
Έ νμμ μ¬μ©λλ κΈ°λ³Έ μ
Έμ μ¬μ μν μ μμ΅λλ€.
Here-Documents
Here-documentsλ νμ Dockerfile νμ RUN λλ COPY λͺ
λ Ήμ μ
λ ₯μΌλ‘ 리λλ μ
νλλ‘ νμ©ν©λλ€.
Example
Reference
Last updated