Dockerfile
Docker Format
λͺ λ Ήμ΄λ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ΅λλ€. κ·Έλ¬λ κ΄λ‘λ μΈμμ λ μ½κ² ꡬλ³νκΈ° μν΄ λλ¬Έμλ‘ μ§μ νλ κ²μ λλ€.
Dockerfileλ 무쑰건
FROM
λͺ λ Ήμ΄λ‘ μμν΄μΌ νλ€.μ΄κ²μ
parser
directives
,comments
, μ μ μARGs
λ€μ μμ μ μλ€.FROM
λͺ λ Ήμ΄λ λΉλ©νλ €κ³ νλParent Image
λ₯Ό μ§μ νλ€FROM
μμλ Dockerfile μ FROM νμ μ¬μ©νλ μΈμλ₯Ό μ μΈνλ νλ μ΄μμARG
λͺ λ Ήμ΄λ§ μ¬ μ μλ€.Dockerλ
#
μΌλ‘ μμνλ μ€μ΄Parser directives
μ΄ μλλ©΄μ£Όμ
μΌλ‘ μ²λ¦¬νλ€.
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μ λ€μ μ§μλ¬Έ λͺ©λ‘μμ μ§μνλ€
ADD
COPY
ENV
EXPOSE
FROM
LABEL
STOPSIGNAL
USER
VOLUME
WORKDIR
ONBUILD
(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>
(shell
form, the command is run in a shell, which by default is/bin/sh -c
on Linux orcmd /S /C
on 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
μ μ£Όμ λͺ©μ μ μ€ν μ€μΈ 컨ν
μ΄λμ κΈ°λ³Έκ°μ μ 곡νλ κ²μ
λλ€
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
λ₯Ό μ¬μ©νλ©΄ μ€ν νμΌ
λ‘ μ€νλ 컨ν
μ΄λ
λ₯Ό ꡬμ±ν μ μμ΅λλ€.
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
Was this helpful?