Docker - gksrlfw/study GitHub Wiki
docker
๊ธฐ์ด
Layer ๊ตฌ์กฐ
์ด๋ฏธ์ง๋ layer ๋จ์๋ก ์์กด์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ง์ ์ด๋ ต์ง๋ง ์ค์ ๋ก ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. ์๋ ๊ณผ์ ์ ์ค์ ๋ก ํด๋ด ์๋ค.
- ubuntu ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์์์ ํ์ผ์ ์์ฑํฉ๋๋ค.
docker run -it --name ubuntu-test ubuntu /bin/bash
touch testfile
- ctrl + p, q ๋ก ์ปจํ ์ด๋์์ ๋น ์ ธ๋์จ ํ์ ๋ฐฉ๊ธ ๋ง๋ ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์ง๋ก commit ํฉ๋๋ค.
docker commit ubuntu-test ubuntu-test:0.0.1
์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ubuntu:latest, ubuntu-test:0.0.1 ๋ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์๊ณ , ๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ ๋์ผํ๋ค๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ํ์ง๋ง ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ์๋ก ์์ฑํ ubuntu-test:0.0.1 ๋ ubuntu:latest ์ด๋ฏธ์ง์ ๋ณ๊ฒฝ๋ ์ปจํ ์ด๋์ ๊ตฌ์กฐ๋ง์ ์ ์ฅํ ์ด๋ฏธ์ง๋ฅผ ๋ถ์ธ ๊ฒ์ผ๋ก, ์ค์ ๋ก๋ testfile ๋งํผ์ ํฌ๊ธฐ๋ง ๊ฐ๊ณ ์์ต๋๋ค. ํ๋ง๋๋ก ubuntu-test:0.0.1 ๋ ubuntu:latest ๋ฅผ ์์กดํ๋ฉฐ, ๋จ์ํ ํ๋์ ์ปค๋ฐ์ด ๋์ด๋ ๊ฒ๊ณผ ๋์ผํ ๊ตฌ์กฐ์ ๋๋ค.
tag ๋
docker ์์ tag ๋ ์ด๋ฏธ์ง์ ์๋ก์ด ์ด๋ฆ์ ๋ถ์ฌํ๋ ์์ ์ ๋๋ค. ์์์ ๋ง๋ ubuntu-test:0.0.1 ์ tag-test tag ํ๋ฉด ubuntu-test:0.0.1 ์ด๋ฏธ์ง๋ tag-test ๋ผ๋ ์ด๋ฆ์ผ๋ก๋ ์ ๊ทผํ ์ ์๊ฒ ๋ฉ๋๋ค.
docker hub ์ ๋ชจ๋ ์ด๋ฏธ์ง ์ด๋ฆ์ ๊ณ ์ ํด์ผ ํ๋ฏ๋ก, tag ๋ฅผ ์ด์ฉํ์ฌ ๊ณ ์ ํ ์ด๋ฆ์ ๋ง๋ค๊ณ ์ด๋ฅผ push ํด์ผํฉ๋๋ค.
Muti stage
๊ฐ๋
์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๋ฉด์ ๋น๋ ๋ฑ์๋ ํ์ํ์ง๋ง ์ต์ข ์ปจํ ์ด๋ ์ด๋ฏธ์ง์๋ ํ์ ์๋ ํ๊ฒฝ์ ์ ๊ฑฐํ ์ ์๋๋ก ๋จ๊ณ๋ฅผ ๋๋์ด์ ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋น๋ ์ด๋ฏธ์ง์ ๋ฐํ์ ์ด๋ฏธ์ง๋ฅผ ๋๋์ด ์์ฑํ์ฌ ์ต์ข ์ด๋ฏธ์ง์ ํฌ๊ธฐ ๋ฐ ๋ฐฐํฌ์๊ฐ์ ์ค์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋จผ์ base ๊ฐ ๋๋ dockerfile ์ ํตํด ์ฑ์ ๋๋ฆฌ๊ธฐ ์ํด ํ์ํ ์์กด์ฑ์ ์ค์นํฉ๋๋ค. ์ดํ, runtime ์ด ๋๋ dockerfile ์๋ base dockerfile ์ ๋ฐ์ ์คํํ์ฌ dockerfillle ๋น๋ ์๊ฐ์ ์ค์ผ์ ์์ต๋๋ค.
๊ธฐํ
M1
์ํคํ ์ฒ์ ๋ฐ๋ผ ๋์ปค ์ด๋ฏธ์ง๋ ๋ค๋ฅด๋ค M1 ์ ๊ธฐ๋ณธ์ ์ผ๋ก linux/arm64/v8 ์ํคํ ์ฒ์ ์ด๋ฏธ์ง๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ์ง๋ง ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ arm64 ๋ฅผ ์ง์ํ์ง๋ ์์ต๋๋ค. Rosseta 2 ๋ ์ธํ ์นฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ๋ ํ๋ก๊ทธ๋จ์ M1 ์ ํ์ฌํ ๋งฅ OS ์์ ์คํํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฎฌ๋ ์ดํฐ์ ๋๋ค. ์ด ๋ฐฉ์์ ์ฌ์ฉํ docker ์ --platform ์ต์ ์ผ๋ก linux/amd64 ๋ก ๋น๋๋ ์ดํ๋ฆฌ์ผ์ด์ ์ M1 ์์ ์คํํ ์ ์์ต๋๋ค.
docker built -t gksrlfw/test:0.0.1 --platform linux/amd64 .
๋๋ dockerfile ์ FROM ์์ ๋ช ์ํด์ค ์ ์์ต๋๋ค.
FROM --platform=linux/x86_64 mysql:8
๋๋ docker compose ์์ platform ์ ๋ช ์ํด์ค ์ ์์ต๋๋ค.
services:
db-master:
platform: linux/x86_64
[https://www.lainyzine.com/ko/article/how-to-install-docker-for-m1-apple-silicon/]