728x90
๋ฐ์ํ
17์ฅ ๋์ปค ์ด๋ฏธ์ง ์ต์ ํํ๊ธฐ: ๋ณด์, ์ฉ๋, ์๋
17.1 ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง๊ฐ ์ต์ ํ๋์ด์ผ ์ด๋ฏธ์ง ๋น๋์ ๋ฐฐํฌ๊ฐ ๋นจ๋ผ์ง๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์์ด ์ง์ผ์ง๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ปจํ ์ด๋๋ฅผ ๊ต์ฒดํ๋ฉด ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค๋ฐ์ง๋ง, ๊ธฐ์กด ์ด๋ฏธ์ง๋ ์ญ์ ๋์ง ์๊ณ ๋จ๋๋ค.
- ์ด ๊ฒฝ์ฐ๊ฐ ์ง์๋๋ฉด ๋์คํฌ ์ฉ๋์ด ์์๊ฐ์ ๋ถ์กฑํด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
$ docker system df
- ์ฃผ๊ธฐ์ ์ผ๋ก docker system prune ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ, ์ฌ์ฉํ์ง ์๋ ์ด๋ฏธ์ง ๋ ์ด์ด๋ ๋น๋ ์บ์๋ฅผ ๋น์์ฃผ๋ ๊ฒ์ด ์ข๋ค.
๊ผญ ํ์ํ ํ์ผ๋ง ์ด๋ฏธ์ง์ ํฌํจ์ํค๊ธฐ
- ๊ผญ ํ์ํ ํ์ผ๋ง ์ด๋ฏธ์ง์ ํฌํจ์ํค๋ ๊ฒ์ด ๋์คํฌ ์ฉ๋ ์ ์ฝ์ ์ฒซ๊ฑธ์ ์ด๋ค.
$ vi Dockerfile.v1
FROM diamol/base
CMD echo app- && Is app && echo docs- && Is docs
COPY . .
$ vi Dockerfile.v2
FROM diamol/base
CMD echo app= && Is app && echo docs- && Is docs
COPY . .
RUN rm -rf docs
- v1 Dockerfile , v2 Dockerfile ์ ์ฉ๋์ ๊ฐ๋ค.
- Dockerfile ์คํฌ๋ฆฝํธ์ ์ธ์คํธ๋ญ์ ํ๋๋ง๋ค ์ด๋ฏธ์ง ๋ ์ด์ด๊ฐ ํ๋์ฉ ์์ฑ๋๋ค.
- ์ด๋, ํ ๋ฒ ์ด๋ฏธ์ง์ ๋ณต์ฌํ ํ์ผ์ ์ด๋ฏธ์ง์์ ๋บ ์ ์๋ค.
- ๊ทธ ๋ค์ ๋ ์ด์ด์์ ํ์ผ์ ์ง์ฐ๋๋ผ๋ ํ์ผ ์์คํ ์์ ์จ๊ฒจ์ง ๋ฟ ์ค์ ๋ก ํ์ผ์ด ์ญ์ ๋์ง ์๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๊ฐ ์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ ์ต์ ํ ํด์ผํ๋ค.
$ vi Dockerfile.v3
FROM diamol/base
CMD echo app- && Is app && echo docs- && Is docs
COPY ./app ./app
- ์ ์ฒ๋ผ ํ์ํ ํ์ผ๋ง์ ์ด๋ฏธ์ง์ ๋ณต์ฌํจ์ผ๋ก์จ, ์ด๋ฏธ์ง ์ฉ๋์ ์ค์ผ ์ ์๋ค.
$ mv rename.dockerignore .dockerignore
$ docker imge build -t diamol/ch17-build-context:v3 -f ./Dockerfile.v3 .
- ๋์ปค์ ๋น๋ ๊ณผ์ ์ ์์ง์ ๋น๋ ์ปจํ ์คํธ(๋น๋๋ฅผ ์คํํ ๋๋ ํ ๋ฆฌ) ๋ฅผ ์์ถํ๊ณ , Dockerfile ์คํฌ๋ฆฝํธ๋ฅผ ํจ๊ป ๋ณด๋ด๋ฉด์ ์์๋๋ค.
- ์ด ๋น๋ ์ปจํ ์คํธ์๋ ๋ถํ์ํ ํ์ผ์ด ํฌํจ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- .dockerignore ํ์ผ์ ์ด์ฉํด ๋ถํ์ํ ํ์ผ์ ์ ์ธํ ์ ์๋ค.
17.2 ์ข์ ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ๊ณ ๋ฅด๋ ๋ฒ
- ๊ธฐ๋ฐ ์ด๋ฏธ์ ํฌ๊ธฐ๋ ๋์คํฌ ์ฉ๋์ด๋ ๋คํธ์ํฌ ์ ์ก ์๊ฐ๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์๊ณผ๋ ๊ด๊ณ๊ฐ ๊น๋ค.
- ์์ ๊ธฐ๋ฐ ์ด๋ฏธ๋ฏธ์ง๋ก ๋์ํ์ง ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์๊ฒ ์ง๋ง, ์ฌ๋ฌ๋ฒ ํ ์คํธํ๋ฉฐ ์ ํฉํ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์์ผ ํ๋ค.
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ OpenJDK ๊ณต์ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
- ์ค์ ๊ฐ์ ๋ฐ๋ผ ๋ค์ํ ํ๊ทธ๊ฐ ๋ถ์ฌ๋ ์๋ฐ ๋ฐํ์(JRE), ๊ฐ๋ฐ์ ํค๋ (JDK) ์ด๋ฏธ์ง๊ฐ ์๋ค.
- ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ํฐ OpenJDK ์ด๋ฏธ์ง๋ ์๋ฐ SDK ์ ์ฒด๊ฐ ๋ค์ด ์๋๋ฐ, ์ด๋ ์ปจํ ์ด๋ ์นจ์ ์์ ๊ณต๊ฒฉ ์๋จ์ผ๋ก ํ์ฉ๋ ์ ์๋ค.
- ๋ฆฌ๋ ์ค ์ปจํ ์ด๋์๋ ์ํ์ธ ๋ฆฌ๋ ์ค, ๋ฐ๋น์ ์ฌ๋ฆผ ์ด๋ฏธ์ง๋ฅผ ์ถ์ฒํ๊ณ , ์๋์ฐ ์ปจํ ์ด๋๋ ๋๋ ธ ์๋ฒ๋ฅผ ์ถ์ฒํ๋ค.
์ค์ฝ์ด
- ์ค์ฝ์ด๋ ์๋ํํฐ ๋๊ตฌ๋ก, ๊ณจ๋ ์ด๋ฏธ์ง์ ์ฝ์ ํด ๋น๋ ์ค์ ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค.
- CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ค์ฝ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ถ์ํ์ฌ, ์คํ ์์ค ๋ผ์ด์ผ์ค, ์ด์์ฒด์ , ์ด๋ฏธ์ง์ ํฌํจ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๋ณด์ ๋ฌธ์ ๊น์ง ํ์ ์ ํด์ค๋ค.
$ docker compose -f docker-compose.yml up -d
$ docker container exec anchore_engine-api_1 anchore-cli image add diamol/openjdk --dockerfile /Dockerfile
17.3 ์ด๋ฏธ์ง ๋ ์ด์ด ์์ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ ์ต์ํ์ผ๋ก
- ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ฉด ํจํค์ง ๋ชฉ๋ก์ ์บ์ฑํ๊ฑฐ๋ ์ถ์ฒ ํจํค์ง ๋ฑ์ ํจ๊ป ์ค์นํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ถํ์ํ ์์๋ ์ค์น ํ ์์ฌ๊ฐ ๋ฐ์ํ๋ค.
- ์ด๋ฐ ์์๊น์ง ํ์คํ๊ฒ ํต์ ํ ์ ์์ด์ผ ํ๋ค.
# apt-get install socat
$ docker image build -t diamol/ch17-socat:v1 .
# apt-get install socat --no-install-recommends
$ docker image build -t diamol/ch17-socat:v2 -f Dockerfile.v2 .
$ docker image Is -f reference=diamol/ch17-socat
$ vi Dockerfile
RUN apt-get install -y curl=7.52.1-5+deb9u16
RUN apt-get install -y socat=1.7.3.1-2+deb9u1
$ vi Dockerfile.v2
RUN apt-get update \\
&& apt-get install -y --no-install-recommends \\
curl=7.52.1-5+deb9u16 \\
socat=1.7.3.1-2+deb9u1 \\
&& rm -rf /var/lib/apt/lists/*
- ์ ๋๊ฐ์ ์ฐจ์ด๋ ๋จ์ apt-get ๋ช ๋ น์ด๋ฅผ ํตํด socat ๋ช ๋ น์ ์ค์นํ ๊ฒ๊ณผ --no-install-recommends ์ต์ ์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
- ์ ๋๊ฐ์ ์ด๋ฏธ์ง ์ฉ๋์ ์ฝ 20MB ๊ฐ ์ฐจ์ด๊ฐ ๋๋ค.
- ๋ํ, RUN ์ธ์คํธ๋ญ์
์ ํ๋๋ก ํฉ์นจ์ผ๋ก์จ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
- ์ต๋ ์ด๋ฏธ์ง ๋ ์ด์ด์๋ ์ ํด์ ธ ์๊ธฐ๋๋ฌธ์ ์ฌ๋ถ์ ๋ ์ด์ด๋ฅผ ๋จ๊ฒจ ๋๋ ๊ฒ์๋ ์๋ฏธ๊ฐ ์๋ค.
- ์ด๋ฏธ์ง ๋ ์ด์ด ์๊ฐ ์ ์ผ๋ฉด ์ปจํ ์ด๋ ํ์ผ ์์คํ ์ ๋ด์ฉ์ ์ถ์ ํ๊ธฐ ํจ์ฌ ์ฝ๋ค.
# ์์ถ ํ์ผ์ ๋ฐ์ ํ ํด์ , ๊ทธ ์ดํ ๋ถํ์ํ ํ์ผ ์ ๊ฑฐ
$ vi Dockerfile
FROM diamol/base
ARG DATASET_URL=https://archive.ics.uci.edu/ml/machine-learning-databases/url/url_svmlight.tar.gz
WORKDIR /dataset
RUN wget -O dataset.tar.gz ${DATASET_URL} && \\
tar xvzf dataset.tar.gz
WORKDIR /dataset/url_svmlight
RUN cp Day1.svm Day1.bak && \\
rm -f *.svm && \\
mv Day1.bak Day1.svm
# ํ์ํ ํ์ผ๋ง ์์ถ ํด์
$ vi Dockerfile.v2
FROM diamol/base
ARG DATASET_URL=https://archive.ics.uci.edu/ml/machine-learning-databases/url/url_svmlight.tar.gz
WORKDIR /dataset
RUN wget -O dataset.tar.gz ${DATASET_URL} && \\
tar -xf dataset.tar.gz url_svmlight/Day1.svm && \\
rm -f dataset.tar.gz
- ์ด ๊ฒฝ์ฐ ํ์ํ ํ์ผ๋ง ์์ถ ํด์ ๊ณผ์ ์ ํ๋์ ์ธ์คํธ๋ญ์ ์ ์งํํ ๊ฒฝ์ฐ ์ฝ 2.4GB ์ ์ฉ๋์ด ์ฐจ์ด๋๋ค.
์ด๋ ๋ฏ ์ด๋ฏธ์ง ๋น๋ ๊ณผ์ ์์ ๊ฐ์ฅ ์ ๊ฒฝ ์จ์ผ ํ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๊ฒ๋ง ์ด๋ฏธ์ง์ ๋ด์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
17.4 ๋ฉํฐ ์คํ ์ด์ง ๋น๋๋ฅผ ํ ๋จ๊ณ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ
$ vi Dockerfile.v3
FROM diamol/base AS download
ARG DATASET_URL=https://archive.ics.uci.edu/ml/machine-learning-databases/url/url_svmlight.tar.gz
RUN wget -O dataset.tar.gz ${DATASET_URL}
FROM diamol/base AS expand
COPY --from=download dataset.tar.gz .
RUN tar xvzf dataset.tar.gz
FROM diamol/base
WORKDIR /dataset/url_svmlight
COPY --from=expand url_svmlight/Day1.svm .
- ์คํฌ๋ฆฝํธ ๊ฐ๋์ฑ๊ณผ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ๋ชจ๋ ๊ณ ๋ คํ Dockerfile ์คํฌ๋ฆฝํธ ์ด๋ค.
- ์คํ ์ด์ง๋ณ๋ก ์ด๋ค ๋จ๊ณ๋ฅผ ๋ฐ๋ ์ค์ธ์ง ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉด์, ์ธ์คํธ๋ญ์ ์ ์ค์ด๋๋ผ ๋ณต์กํ๊ฒ ๋ช ๋ น์ด๋ฅผ ํฉ์น ํ์๊ฐ ์๋ค.
- ์ต์ข ์ ์ผ๋ก ๋น๋๋๋ ์ด๋ฏธ์ง์๋ ์์ ๋จ๊ณ์์ ๋ช ์์ ์ผ๋ก ๋ณต์ฌํด ์จ ํ์ผ๋ง์ด ํฌํจ๋๋ค.
- ์ํ๋ ์ง์ ๊น์ง๋ง ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ผ๋ฏ๋ก ๋๋ฒ๊น ํธ์์ฑ์ ์ป์ ์ ์๋ค.
# ์ด๋ฏธ์ง ์ ์ฒด ๋น๋
$ docker imiage build -t diamol/ch17-ml-dataset:v3 -f Dockerfile.v3 .
# download ์คํ
์ด์ง๊น์ง ๋น๋
$ docker image build -t diamol/ch17-ml-dataset:v3-download -f Dockerfile.v3 --target download .
# expand ์คํ
์ด์ง๊น์ง ๋น๋
$ docker image build -t diamol/ch17-ml-dataset:v3-expand -f Dockerfile.v3 --target expand .
17.5 ์ต์ ํ๊ฐ ์ค์ํ ์ด์
์ด๋ฏธ์ง ์ต์ ํ ๋ฐฉ๋ฒ
- ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ค์ํ๋ค.
- ์์ ๋ง์ ๊ณจ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ถ ์ ์๋ค๋ฉด ๋งค์ฐ ์ด์์ ์ด๋ค.
- ์์ฃผ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋๋ฆฌ๋ฉด, ๋ฉํฐ ์คํ ์ด์ง ๋น๋๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ๋ถํ์ํ ํจํค์ง๋ ํ์ผ์ ํฌํจํ์ง ์์์ผ๋ก์จ, ๋ ์ด์ด ํฌ๊ธฐ๋ฅผ ์ต์ํ์ผ๋ก ์ ์งํ๋ค.
- Dockerfile ์คํฌ๋ฆฝํธ๋ ์์ฃผ ์์ ์ด ์ผ์ด๋๋ ์์๋๋ก ๋ค์ ์ค๋๋ก ๋ฐฐ์นํ์ฌ ์บ์๋ฅผ ์ต๋ํ ํ์ฉํ๋ค.
์ด๋ฏธ์ง ์ต์ ํ ํจ๊ณผ
- ๊ฐ๋ฐ์๋ ์ต์ ํ๋ฅผ ํตํด ์๊ฐ๊ณผ ๋์คํฌ ๊ณต๊ฐ์ ๋ ๋ง์ด ํ๋ณตํ ์ ์๋ค.
- ์ต์ ํ๋ฅผ ํตํด ๋น๋ ์๊ฐ, ๊ฒ์, ํธ์์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ ์ฝ์ CI/CD ํ์ดํ๋ผ์ธ์ ์คํ ํ์๋ฅผ ๋๋ฆด ์ ์๋ค.
- ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ํตํด ์ปจํ ์ด๋ ์คํ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
- ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ค์์ผ๋ก์จ, ๋ถํ์ํ ํจํค์ง๋ ํ์ผ์ ํตํ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
728x90
๋ฐ์ํ