07N. ONBUILD
07N. ONBUILD ๊ด๋ จ
ONBUILD
๋ ์์ฑํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ๋ ๋ช
๋ น์ ์คํ(trigger)ํฉ๋๋ค. ์ต์ด์ ONBUILD
๋ฅผ ์ฌ์ฉํ ์ํ์์๋ ์๋ฌด ๋ช
๋ น๋ ์คํํ์ง ์์ต๋๋ค. ๋ค์ ๋ฒ์ ์ด๋ฏธ์ง๊ฐ FROM
์ผ๋ก ์ฌ์ฉ๋ ๋ ์คํํ ๋ช
๋ น์ ์์ฝํ๋ ๊ธฐ๋ฅ์ด๋ผ ํ ์ ์์ต๋๋ค.
.
Dockerfile
ONBUILD RUN touch /hello.txt
ONBUILD ADD world.txt /world.txt
ONBUILD <Dockerfile ๋ช
๋ น> <Dockerfile ๋ช
๋ น์ ๋งค๊ฐ ๋ณ์>
ํ์์
๋๋ค. FROM
, MAINTAINER
, ONBUILD
๋ฅผ ์ ์ธํ ๋ชจ๋ Dockerfile
๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ONBUILD
๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ค ํด๋น ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปค์คํฐ๋ง์ด์ง์ ํ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ONBUILD
๋ฅผ ์ฌ์ฉํ์ฌ RUN touch /hello.txt
๋ฅผ ์คํํ๋๋ก ์ค์ ํฉ๋๋ค.
.
Dockerfile
FROM ubuntu:latest
ONBUILD RUN touch /hello.txt
docker build
๋ช
๋ น์ผ๋ก example
์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ค docker run
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์์ฑํฉ๋๋ค. ์ปจํ
์ด๋์ Bash ์
ธ์ด ์คํ๋๋ฉด ls
๋ช
๋ น์ผ๋ก /
์ ํ์ผ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker build --tag example .
sudo docker run -i -t example /bin/bash
ls
#
# bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
ONBUILD๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ example
์ด๋ฏธ์ง์๋ /hello.txt
ํ์ผ์ด ์์ฑ๋์ง ์์์ต๋๋ค.
์ด์ FROM์ ์ฌ์ฉํ์ฌ example
์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
.
Dockerfile
<span class="token instruction"><span class="token keyword">FROM example
docker build
๋ช
๋ น์ผ๋ก example2
์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ค docker run
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์์ฑํฉ๋๋ค. ์ปจํ
์ด๋์ Bash ์
ธ์ด ์คํ๋๋ฉด ls
๋ช
๋ น์ผ๋ก /
์ ํ์ผ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker build --tag example2 .
#
# Sending build context to Docker daemon 2.048kB
# Step 1/1 : FROM example
# Executing 1 build trigger
# ---> Running in 51affb087bfb
# Removing intermediate container 51affb087bfb
# ---> da3e74dad967
# Successfully built da3e74dad967
# Successfully tagged example2:latest
sudo docker run -i -t example2 /bin/bash
ls
#
# bin boot dev etc hello.txt home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
docker build
๋ช
๋ น์ ์คํํ ๋ # Executing 1 build triggers
๋ผ๊ณ ์ถ๋ ฅ๋๊ณ ๊ทธ ์๋๋ถํฐ ONBUILD
๋ก ์ค์ ํ ๋ช
๋ น์ด ์คํ๋ฉ๋๋ค. ์ด์ ONBUILD
๋ฅผ ํตํด example2
์ด๋ฏธ์ง์ /hello.txt
ํ์ผ์ด ์์ฑ๋์์ต๋๋ค.
ONBUILD
๋ ๋ฐ๋ก ์๋ ์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋๋ง ์ ์ฉ๋๊ณ , ์์ ์ด๋ฏธ์ง์๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ฆ ONBUILD
์ค์ ์ ์์๋์ง ์์ต๋๋ค.
์ฐธ๊ณ
docker inspect
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง์ ONBUILD
์ค์ ์ ํ์ธํ ์ ์์ต๋๋ค.
sudo docker inspect -f "{{ .ContainerConfig.OnBuild }}" example
#
# [RUN touch /hello.txt]