์ปจํ
์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์คํ ํ๊ฒฝ(๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ค์ ๋ฑ)์ ๋ฌถ์ด์ ๊ฒฉ๋ฆฌ๋ ์ํ๋ก ์คํํ๋ ๊ธฐ์ ์ด๋ค. (ex. Docker, Kubernetes ๋ฑ)
์ฝ๊ฒ ๋งํด, ํ๋ก๊ทธ๋จ + ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ์ค์ ํ์ผ์ ํ๋์ ์์์ ๋ด์ ์ด๋์๋ ๋์ผํ๊ฒ ์คํํ ์ ์๊ฒ ๋ง๋๋
์ค์น ํ๊ฒฝ์ ์ข ์๋์ง ์์ผ๋ฉฐ, ๊ฐ์๋จธ์ ๋ณด๋ค ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค. ๋ํ, ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์๋ค. ์ปจํ ์ด๋๋ OS ์ ์ฒด๋ฅผ ๊ฐ์ํํ์ง ์๊ณ ์ปค๋๋ง ๊ณต์ ํ๋ค.
๋จ์ผ ์๋ฒ ํ๊ฒฝ์ผ ๊ฒฝ์ฐ
์ผ๋ฐ ๋ฆฌ๋
์ค ์๋ฒ ํ๊ฒฝ์ผ๋ก ์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
๋ฆฌ๋
์ค ์๋ฒ์์ python --version์ ํตํด ์์๋ณธ Python์ ๋ฒ์ ์ด 3.12๋ผ๋ฉด ํด๋น ์๋ฒ์์ ์คํ๋๋ ๋ชจ๋ ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Python 3.12 ํ๊ฒฝ์ ์ฌ์ฉํ๋ค.
๋ฌผ๋ก ์ฌ๋ฌ Python ๋ฒ์ ์ ์ค์นํด PATH๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ๊ฐ์ํ๊ฒฝ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ด๋ ์์คํ
์ ๋ฐ์ ์์กด์ฑ๊ณผ ์์ ํ๊ฒ ๋ถ๋ฆฌ๋ ํ๊ฒฝ์ ๋ณด์ฅํ์ง๋ ์๋๋ค.
์ปจํ ์ด๋๋ฅผ ์ด๋ค๋ฉด?
ํ๋์ ๋ฆฌ๋
์ค ์๋ฒ ์์์ ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ๋ ์คํ ํ๊ฒฝ์ ๋์์ ์ฌ์ฉํ ์ ์๋ค. ๊ฐ ์ปจํ
์ด๋๋ ๋
๋ฆฝ๋ ํ์ผ ์์คํ
, ๋
๋ฆฝ๋ ํ๋ก์ธ์ค ๊ณต๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
์ปจํ
์ด๋๋ ํ์ดํผ๋ฐ์ด์ ์ฒ๋ผ OS ์ ์ฒด๋ฅผ ๊ฐ์ํํ์ง๋ ์๋๋ค. ๋ฐ๋ผ์ ์์ ๊ด๋ฆฌ๋ ํธ์คํธ ์๋ฒ์ ์ข
์๋์ด ํธ์คํธ ์ปค๋์ ๊ณต์ ํ๋ค.

์ปจํ
์ด๋๋ VM๊ณผ ๋ค๋ฅด๊ฒ ์ด์์ฒด์ ์ปค๋์ ๊ณต์ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก VM์ ๋นํด ๋น ๋ฅด๊ณ ๊ฐ๋ณ๋ค๋ ์ฅ์ ์ด ์๋ค.
VM์ ๊ฐ๊ฐ์ Guest OS๋ฅผ ํฌํจํ๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๊ธฐ ์ํด ๋งค๋ฒ ์ด์์ฒด์ ์ ์ฒด๋ฅผ ๋ถํ
ํด์ผ ํ๋ค. ๋ฐ๋ฉด ์ปจํ
์ด๋๋ ์ด๋ฏธ ์คํ ์ค์ธ ํธ์คํธ ์ปค๋ ์์์ ๋
๋ฆฝ๋ ํ๋ก์ธ์ค๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ณ ๊ฐ๋ณ๋ค.
์ปจํ ์ด๋์ ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ
์ปจํ ์ด๋๋ ์๋ก์ด ๊ฐ์ ์ด์์ฒด์ ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ, ๋ฆฌ๋ ์ค์ namespace์ cgroups ๊ธฐ๋ฅ์ ํ์ฉํด ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ค.
- namespace: ํ๋ก์ธ์ค, ๋คํธ์ํฌ, ํ์ผ ์์คํ ๋ฑ ๋ฆฌ์์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฒฉ๋ฆฌ
- cgroups(control groups): CPU, Memory ๋ฑ์ ๋ฆฌ์์ค ์ฌ์ฉ๋ ๊ฒฐ์
๋ ๊ฐ๋ ์ด ๋น์ทํด๋ณด์ด์ง๋ง namespace๋ ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ณผ ์ ์๋ ๋ฒ์๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒฉ๋ฆฌ์ ๊ฐ๋ ์ด๊ณ , cgroups์ ํด๋น ํ๋ก์ธ์ค๊ฐ ์ธ ์ ์๋ ์ฌ์ฉ๋์ ๊ฒฐ์ ํ๋ ์ ํ์ ๊ฐ๋ ์ด๋ค.
์ด ๋ ๊ธฐ๋ฅ์ด ํจ๊ป ๋์ํ๋ฉด์, ํ๋์ ํ๋ก์ธ์ค๋ ๋
๋ฆฝ๋ ์๋ฒ ์์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋์ํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ๋ฆฌ๋
์ค ์๋ฒ์์ 2๊ฐ์ ์ปจํ
์ด๋๊ฐ ์คํ ์ค์ด๋ผ๊ณ ๊ฐ์ ํ์ ๋, ์ปจํ
์ด๋ A์์ ps aux๋ฅผ ์คํํ๋ฉด A ๋ด๋ถ ํ๋ก์ธ์ค๋ง ๋ณด์ธ๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ ๋ ์ปจํ
์ด๋ ๋ชจ๋ ๊ฐ์ ๋ฆฌ๋
์ค ์ปค๋ ์์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ด๋ค.
LXC (Linux Containers)
LXC๋ ๋ฆฌ๋ ์ปค๋์ namespace์ cgroups๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฉ๋ฆฌ๋ ๋ฆฌ๋ ์ค ํ๊ฒฝ์ ๋ง๋๋ ๊ธฐ์ ์ด๋ค. ์ด๊ธฐ Docker๋ ๋ด๋ถ์ ์ผ๋ก LXC๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋๋ฅผ ์คํํ๋ค. ํ์ฌ๋ libcontainer๋ผ๋ ๋ ์์ ์ธ ์คํ ์์ง์ ๊ฐ๋ฐํ์ฌ LXC ์์ด ์์ฒด์ ์ผ๋ก ๋์ํ๋ค.
LXC๋ ์ด์์ฒด์ ๋จ์ ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ๋์ปค์ฒ๋ผ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ์คํํ๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ, VM๊ณผ ์ ์ฌํ ๊ฒฝ๋ ๋ฆฌ๋ ์ค ์๋ฒ์ฒ๋ผ ๋์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฒ๋ณด๊ธฐ์๋ VM๊ณผ ๋งค์ฐ ๋น์ทํ์ง๋ง, ์ค์ ๋ก๋ ํธ์คํธ์ ๋์ผํ ์ปค๋์ ๊ณต์ ํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค.
Ubuntu์ LXC ์ค์น ๋ฐ ์ปจํ ์ด๋ ์์ฑ
LXC๊ฐ ์๋ฟ์ง ์์์ ubuntu ์ธ์คํด์ค์์ ์ค์นํด๋ณด์๋ค.
sudo apt install lxc
์์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์นํ ์ ์๊ณ lxc-checkconfig์ ํตํด ์ค์น ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.

ํ ์คํธ ์ปจํ ์ด๋ ์์ฑ
sudo lxc-create -n test-container1 -t download
์์ฑ ํ ์๋์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ค.

docker exec๋ฅผ ํตํด ์ปจํ ์ด๋ ๋ด๋ถ์ ์ ์ํ๋ ๊ฒ์ฒ๋ผ ์๋์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ปจํ ์ด๋ ๋ด๋ถ์ ์ ์ ๊ฐ๋ฅํ๋ค.
sudo lxc-attach -n test-container1
ํธ์คํธ ์๋ฒ์ ์ปจํ ์ด๋ ๋ด๋ถ์์ uname -r ๋ช ๋ น์ด๋ฅผ ํตํด ๋ฆฌ๋ ์ค ์ปค๋ ๋ฒ์ ์ ํ์ธํด๋ณด๋ฉด ์ปค๋ ๋ฒ์ ์ด ๋์ผํ ๊ฒ์ ๋ณผ ์ ์๋ค.

์ปจํ ์ด๋๊ฐ ์ค์ ๋ก ๋คํธ์ํฌ namespace๋ฅผ ํตํด ๊ฒฉ๋ฆฌ๋๋์ง ํ์ธํ๊ธฐ ์ํด, ๋ด๋ถ์ Nginx๋ฅผ ์ค์นํ๊ณ ํฌํธ ๋์์ ๋น๊ตํด๋ณด์๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด nginx๋ฅผ ์ค์นํ์์ผ๋ฉฐ, ์ดํ ss -tulnp ๋ช ๋ น์ด๋ก ํฌํธ 80์ด ์ด๋ ค์๋์ง ํ์ธํ๋ค.
apt install nginx -y
systemctl start nginx

์ปจํ
์ด๋ ๋ฐ์ผ๋ก ๋์์๋ ๋์ผํ ๋ช
๋ น์ด๋ฅผ ์คํํด๋ดค๋๋ฐ, ํธ์คํธ์์๋ ํฌํธ 80์ด ์ด๋ ค์์ง ์์๋ค.
์ฆ, ์ด๋ ์ปจํ
์ด๋ ๋ด๋ถ์์ ์ด๋ฆฐ ํฌํธ๋ ํด๋น namespace ์์์๋ง ์ ํจํ๋ค๋ ๊ฒ์ ๋ปํ๋ค.
์ด๋ฅผ ํตํด ์ปจํ ์ด๋๋ ์ปค๋์ ๊ณต์ ํ์ง๋ง, ๋คํธ์ํฌ ์คํ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋์ด ๋์ํ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Docker (0) | 2025.04.29 |
|---|---|
| ๊ฐ์ํ (Virtualization) (0) | 2025.04.28 |
| [OS] ํ๋ก์ธ์ค (0) | 2025.02.17 |