[๊ฐ€์ƒํ™” - Container] Docker Container๋ฅผ ์ด์šฉํ•œ Ubuntu Container (systemctl ๋ช…๋ น์–ด ๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ) ์ค€๋น„ํ•˜๊ธฐ

2023. 7. 14. 06:00ใ†System ์ž‘์—…์‹ค/Docker

728x90
๋ฐ˜์‘ํ˜•

 

 



 

 

 

์™„๋ฒฝํ•œ IT ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ์œ„ํ•œ Docker

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ Docker Container๋ฅผ ์ด์šฉํ•œ Ubuntu Container (systemctl ๋ช…๋ น์–ด ๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ) ์ค€๋น„ํ•˜๊ธฐ

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ด๋ฒˆ์—๋Š” Docker๋ฅผ ์ด์šฉํ•ด์„œ Ubuntu Server๋ฅผ ์ค€๋น„ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

์ด๋Š” ์—ฌ๋Ÿฌ Application์„ ์ค€๋น„ํ•  ๋•Œ, ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” Template๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋ ๊ฑฐ๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ์ค€๋น„ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

 

 

 

    ๐Ÿ”ฝ Docker Container

        ๐Ÿ“ฆ Ubuntu - Image ๋‚ด๋ ค๋ฐ›๊ธฐ

๋จผ์ € 2023๋…„ 02์›” 23์ผ ๊ธฐ์ค€ ์ตœ์‹  Ubuntu Image๋ฅผ ์ค€๋น„ํ•ด ๋ณผ๊ฒŒ์š”.

docker pull ubuntu

 


์ตœ์ดˆ ์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Image๋ฅผ ๋‚ด๋ ค ๋ฐ›์•„ ์ค๋‹ˆ๋‹ค.


docker images


์œ„์™€ ๊ฐ™์ด 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์„ ๋งŒ๋“ค์–ด ์ž‘์—…ํ•ด ๋ณผ๊ฒŒ์š”.

vim Dockerfile

 

 


์ฃผ๋‹ˆ์“ฐ๋Š” ์œ„์™€ ๊ฐ™์ด Docker File์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

์—ฌ๊ธฐ์„œ FROM์€ Dockerfile ๋‚ด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Build ๊ธฐ๋ฐ˜์ด ๋  Image๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณณ์ด์—์š”.
ENV๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๊ณ , RUN์€ ํ•ด๋‹น ๋ช…๋ น์–ด๋“ค์ด ์‹คํ–‰๋˜์–ด Build๋œ Image๋ฅผ ๋งŒ๋“ค๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๊ณ , VOLUME์€ Docker Host์— ์žˆ๋Š” ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ๋กœ์˜ Directory๋ฅผ Mappingํ•ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

CMD๋Š” Image๊ฐ€ Container๋กœ ์˜ฌ๋ผ๊ฐˆ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋“ค์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด์—์š”.

chmod -R <๊ถŒํ•œ ์ •๋ณด> <File Name>

 


๊ทธ๋Ÿฐ ๋’ค ์œ„์™€ ๊ฐ™์ด Dockerfile ๊ถŒํ•œ์„ ์„ค์ •ํ•ด ์ฃผ์—ˆ์–ด์š”.

docker build --rm -t {Docker Image Name}

 

๊ทธ๋ฆฌ๊ณ  ์œ„์™€ ๊ฐ™์ด Docker Image๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Build ํ•ด ์ฃผ์—ˆ์–ด์š”.

vim <Shell Script File Name>.sh

 


์œ„์™€ ๊ฐ™์ด 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๋ฅผ ํ•ด ์ค๋‹ˆ๋‹ค.

 

 

chmod -R <๋ณ€๊ฒฝํ•  ๊ถŒํ•œ> <File Name>

 


๊ทธ๋ฆฌ๊ณ , ํ•ด๋‹น Shell Script File์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ์–ด์š”.

 

 

 



ํ•ด๋‹น Shell Script๋ฅผ ์ž‘๋™ ์‹œ์ผœ Container๊ฐ€ ๊ธฐ๋™๋˜๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.

 

docker exec -it <Docker Container ID> /bin/bash

 


์œ„์™€ ๊ฐ™์ด ํ•ด๋‹น Container์— ์ ‘์†ํ•œ ๋’ค systemctl ๋ช…๋ น์–ด๊ฐ€ ์ž˜ ๋จน๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”.

์ด์ œ ์ด๋ ‡๊ฒŒ ๋งŒ๋“  Ubuntu Docker Image๋ฅผ ๊ฐ€์ง€๊ณ , ์—ฌ๋Ÿฌ Application์šฉ Docker๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ํ™œ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”.





 

 

์™„๋ฒฝํ•œ IT ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ์œ„ํ•œ Docker

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•