2023. 7. 14. 06:00ใSystem ์์ ์ค/Docker
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Docker Container๋ฅผ ์ด์ฉํ Ubuntu Container (systemctl ๋ช ๋ น์ด ๋๊ฒ ๋ง๋ค๊ธฐ) ์ค๋นํ๊ธฐ
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ด๋ฒ์๋ Docker๋ฅผ ์ด์ฉํด์ Ubuntu Server๋ฅผ ์ค๋นํด ๋ณด๋ ค๊ณ ํด์.
์ด๋ ์ฌ๋ฌ Application์ ์ค๋นํ ๋, ์ฌ์ฉํ๊ณ ์ ํ๋ Template๊ณผ ๊ฐ์ ๊ฒ์ด ๋ ๊ฑฐ๊ณ , ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ์ค๋นํด ๋ณด๋ ค๊ณ ํด์.
๐ฝ Docker Container
๐ฆ Ubuntu - Image ๋ด๋ ค๋ฐ๊ธฐ
๋จผ์ 2023๋
02์ 23์ผ ๊ธฐ์ค ์ต์ Ubuntu Image๋ฅผ ์ค๋นํด ๋ณผ๊ฒ์.
์ต์ด ์ ๋ช
๋ น์ด๋ฅผ ํตํด Image๋ฅผ ๋ด๋ ค ๋ฐ์ ์ค๋๋ค.
์์ ๊ฐ์ด Image๊ฐ ์ ์ค๋น๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
๐ฆ systemctl ๋จน์ง ์๋ ๋ฌธ์ ํด๊ฒฐ
Docker๋ฅผ ํตํด Ubuntu๋, CentOS์ ๊ฐ์ Linux Container๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก systemctl ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ด์.
Docker Hub Offical image์์ ์ด์ผ๊ธฐํ๋ ๋ฐ์ ์ํ๋ฉด systemd Deamon์ด ํฌํจ์ ๋์ด ์์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก inactiveํ๊ฒ ์ค์ ์ ํด๋จ๋ค๊ณ ํฉ๋๋ค.
์ด๋ ํด๋น daemon์ ์คํํ ๋, cgroup๋ฅผ ๋ชป์ฐพ๊ฑฐ๋, ๊ถํ ๋ฌธ์ ๋ก ์ด์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, Docker๋ ์์ ๊ฐ์ํ๊ฐ ์๋ ๊ฒฉ๋ฆฌ์ ๊ฐ๋
์ผ๋ก ๋์จ ์น๊ตฌ์ด๊ธฐ ๋๋ฌธ์ Docker Host์ Linux Kernel๋ฅผ ๋น๋ ค ์ฐ๊ฒ ๋๊ณ , ๊ทธ ๋ถ๋ถ์์ ํนํ cgroup๋ผ๋ ์น๊ตฌ๋ ๋ํด Linux์ ์์์ Group ๋จ์๋ก ํ ๋นํ๋ ์ญํ ์ ํ๋ ์น๊ตฌ์์.
์ด ๋ฌธ์ ๋ ๊ฒฐ๊ตญ ๊ฐ OS Container์์ systemd๋ฅผ ํตํด ์คํํ๋ daemon์ด ํด๋น ์์์ ํ ๋น ๋ฐ์ง ๋ชปํ๊ฒ ํด๋จ๊ณ , ์ด๊ฒ ๋๋ฌธ์ ์ด์ฉํ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด์์.
์ด๋ ๋ณด์์ ์ํ ๋๋ฌธ์ ๊ถํ์ ์ ํํด ๋จ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํด์.
์ฌ๊ธฐ์ systemctl์ systemd๋ฅผ ๊ด๋ฆฌํ๋ ๋ช
๋ น์ด์์.
๋จผ์ ์ด ๋ถ๋ถ์ ํด๊ฒฐํด์ผ ์ฐจํ Docker Container๊ฐ ์ฌ ๊ธฐ๋ ๋๋๋ผ๋ ํด๋น Service๊ฐ ์๋์ผ๋ก ๊ธฐ๋๋๊ฒ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ๋จผ์ ํด๊ฒฐํด ๋ณด๋ ค ํด์.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด cgroup์ ์ฌ์ฉํ ์ ์๋ Ubuntu Image๋ฅผ ๋ง๋ค์ด ๋ณผ๊ฑฐ์์.
์ฃผ๋๋ Dockerfile์ ๋ง๋ค์ด ์์
ํด ๋ณผ๊ฒ์.
์ฃผ๋์ฐ๋ ์์ ๊ฐ์ด Docker File์ ๋ง๋ค์ด ์ฃผ์์ด์.
์ฌ๊ธฐ์ FROM์ Dockerfile ๋ด ๋ช
๋ น์ด๋ฅผ ํตํด Build ๊ธฐ๋ฐ์ด ๋ Image๋ฅผ ์ ์ํ๋ ๊ณณ์ด์์.
ENV๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํด ์ค ์ ์๋ ๋ถ๋ถ์ด๊ณ , RUN์ ํด๋น ๋ช
๋ น์ด๋ค์ด ์คํ๋์ด Build๋ Image๋ฅผ ๋ง๋ค๊ฒ ํ๋ ๊ฒ์ด๊ณ , VOLUME์ Docker Host์ ์๋ ํด๋นํ๋ ๊ฒฝ๋ก์ Directory๋ฅผ Mappingํด ์ฃผ๋ ๊ฒ์ด์์.
CMD๋ Image๊ฐ Container๋ก ์ฌ๋ผ๊ฐ ๋ ์คํ๋๋ ๋ช
๋ น์ด๋ค์ ๋์ดํ ์ ์๋ ๋ถ๋ถ์ด์์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Dockerfile ๊ถํ์ ์ค์ ํด ์ฃผ์์ด์.
๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด Docker Image๋ฅผ ๋ง๋ค๊ธฐ ์ํด Build ํด ์ฃผ์์ด์.
์์ ๊ฐ์ด Docker ๊ธฐ๋์ฉ Shell Script File์ ์์ฑํด ์ฃผ์์ด์.
์ฌ๊ธฐ์ ์ฐธ๊ณ ํ ๋งํ ์ฌํญ์ systemd์ ๊ฒฝ์ฐ CAP_SYS_ADMIN capablilty๊ฐ ํ์ํ๋, docker์ non previleged container๋ ๋ณด์ ๋ฌธ์ ๋ก CAP_SYS_ADMIN capablilty๊ฐ ์๋ค๋ ์ ์ด์์.
๋ํ, previleged container๋ ๋น ๊ถ์ฅ์ฌํญ์ด๊ธฐ๋ ํด์.
systemd ๊ฐ์ ๊ฒฝ์ฐ cgroup File์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด -v /sys/fs/cgroup:/sysfs/cgroup:ro๋ฅผ ํตํด Docker Host์ cgroup๋ฅผ Mappingํด ์ฃผ๋, Read-Only๋ก Mount๋ฅผ ํด ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ , ํด๋น Shell Script File์ ๊ถํ์ ๋ณ๊ฒฝํด ์ฃผ์์ด์.
ํด๋น Shell Script๋ฅผ ์๋ ์์ผ Container๊ฐ ๊ธฐ๋๋๊ฒ ํด ์ค๋๋ค.
์์ ๊ฐ์ด ํด๋น Container์ ์ ์ํ ๋ค systemctl ๋ช
๋ น์ด๊ฐ ์ ๋จน๋๊ฑธ ํ์ธํ ์ ์์์ด์.
์ด์ ์ด๋ ๊ฒ ๋ง๋ Ubuntu Docker Image๋ฅผ ๊ฐ์ง๊ณ , ์ฌ๋ฌ Application์ฉ Docker๋ฅผ ๋ง๋๋๋ฐ ํ์ฉํ๋ฉด ์ข์ ๊ฑฐ ๊ฐ์์.
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'System ์์ ์ค > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Ubuntu] Docker gitlab ์ค์น ๋ฐ Mail ๊ธฐ๋ฅ ํ์ฑํ (2) | 2023.08.02 |
---|---|
[๊ฐ์ํ - Container] Docker Container๋ฅผ ์ด์ฉํ MariaDB ์ค์นํ๊ธฐ (0) | 2023.07.11 |
[Docker] ์คํ์ค์ธ Container Port Forwarding ๋ค์ ํ๊ธฐ (0) | 2023.07.08 |
[Docker]Rocky Linux Docker ๋ฐ Docker-compose ์ค์น (0) | 2023.07.08 |
[Docker] ์ ์ฅ์ ๋ณ๊ฒฝ (0) | 2023.07.07 |