busybox - unix command tools
Intro busybox๋ ์๊ณ ๊ฐ๋ณ๊ณ ๋น ๋ฅธ POSIX ํ์ค ์ ํธ ๋ชจ์์ด๋ค. docker์์ ์ฌ๋ฌ ๊ฐ์ง๋ก ์์ฉํด์ ์ฌ์ฉํ ์ ์๋ค. ์์ฉ ์๋ฒ ๋๋ ์์คํ ์ ๋น๋ํ๊ธฐ windows ํ๊ฒฝ์์ Unix Shell, command ์ฌ์ฉํ๊ธฐ HTTP ์น์๋ฒ๋ก ๋๋ฆฌ๊ธฐ Kubernates์ init container๋ก ์ฌ์ฉํ๊ธฐ Docker ๊ฐ์์ปจํ ์ด๋ ๋ณผ๋ฅจ์๋ฒ(์คํ ๋ฆฌ์ง)๋ก ์ฌ์ฉํ๊ธฐ Busybox์ ๊ดํ์ฌ ๋๋๊ฒ๋ busybox๋ httpd๋ฅผ ๋ด์ฅํ๊ณ ์๋ค. ๋ฌผ๋ก ๋๊ท๋ชจ ์ฒ๋ฆฌ๋ ๊ณค๋ํ๋ค. ๋ด์ฅ๋ grep๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง ์๋ค. ๋์ฉ๋ ํ์ผ ๊ฒ์์ ์จ์ผํ๋ค๋ฉด ํจ์จ์ด ์ข์ง ์์ผ๋ฏ๋ก gnu grep์ ์น์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. busybox๋ glibc, musl ๋ฑ์ ์ง์ํ๋ ๋ฒ์ ์ด ์๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด ์ฌ๋ฌ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋ฃ์ด์ผํ ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ์ ์์ด ํจ์จ์ ์ด๋ค. alpine ๋ฆฌ๋ ์ค๊ฐ busybox + musl + os env ์ด๋ฏ๋ก ์์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์ ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ๊ธฐ๋ณธ์ ์ธ utf-8์ด ์ง์๋์ง๋ง ์ถ๋ ฅ์ ๊ด์ฐฎ๊ณ ์ ๋ ฅ์ ๋ฌธ์ ๊ฐ ์๋ค. sh, echo, vi ๋ ๊ฐ๋ณ๊ฒ ์ฐ๊ธฐ๋ ์ข์ผ๋ utf-8 ํ๊ธ์ ๋ ฅ์ด ์๋๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์๋ bash, echo, vi๋ฅผ ์ ์ ์ปดํ์ผ ๋ฐ์ด๋๋ฆฌ๋ก ๋์ฒด ๋๋ ๋์ปคํ๋ธ(DockerHub)์ toybox๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. utf-8 ์ ์ถ๋ ฅ์ ๋ชจ๋ ์ง์ํ๋ค. ์ฌ์ง์ด ์ฌ์ด์ฆ๊ฐ ๋ ์๋ค. utf-8์ ์ ์ถ๋ ฅ ํ๊ฒฝ์ด ๋ชจ๋ ํ์ํ๋ค๋ฉด toybox๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ๋ค. busybox(์ฝ1.2MB)๋ toybox(์ฝ764K)๋ ์ ๋ง ๊ฐ๋ณ๊ฒ ์คํํ๊ณ ๋ฐฐํฌํ ์ ์๋ ํ๊ฒฝ์ด๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ด๊ฒ์ ๋ํ ํ์ฉ์ ๊ฐ๋ฐํ๊ฒฝ์ด๋ ํฐ๊ท๋ชจ์ ์คํํ๊ฒฝ๋ณด๋ค๋ ์๊ณ ๊ฐ๋ฒผ์ด ํ๊ฒฝ์์ ํจ์จ์ ์ธ ์ด์ฉ์ด ํ์ํ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ์๋์ฐ์ฆ์์ ์ ๋์ค ๋ช ๋ น ํ๊ฒฝ ๊ตฌ์ฑ Busybox64๋ ์๋์ฐ์ฆ ํ๊ฒฝ์์ busybox๋ฅผ ํตํด unix ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. ์๋์ฐ์ฆ์์ ๊ฐ๋จํ ํ์ผ ํธ์ง, ์ด๋, ํ์ผ ์กฐ์ ๋ฑ ์ต์ํ 172๊ฐ์ ๋ช ๋ น์ด ์ฌ์ฉ๊ฐ๋ฅ. Shell Script ์์ฑ๋ ๊ฐ๋ฅ : sh, bash, vi ๋ฑ์ผ๋ก ์ฌ๋ฌ ์์ ์๋ํ ์คํฌ๋ฆฝํธ ์์ฑ. ๊ฐ๋ฒผ์ด ์์ ๋ง ํ๋ค๋ฉด cygwin, msys2, git for windows ๋ฑ์ด ๊ตณ์ด ํ์์น ์๋ค. busybox.exe(32bit), busybox64.exe(64bit), busybox64u.exe (64bit unicode) ์ค ์ ํํด์ ์ฌ์ฉํ๋ค. ์ค์น ๋ค์ด๋ก๋: https://frippery.org/busybox/ ์ฌ์ฉ๋ฒ ์ ๋นํ ์์น์ ๋ค์ด๋ก๋ ํ ํ PATH์ ์ถ๊ฐํด ์ค๋ค. command ์ฐฝ ๋๋ Powershell์ ์คํํ๋ค. busybox.exe bash -l : bash ์ ํ๊ฒฝ์ผ๋ก ํฐ๋ฏธ๋์ด ์คํ๋๋ค. (sh, ash, bash ์ง์) busybox.exe --list : ์ฌ์ฉํ ์ ์๋ unix ๋ช ๋ น๋ค ๋ชฉ๋ก (sed, awk, grep, make, wget, vi, ..) busybox.exe --help : ๋์๋ง REFERENCE busybox home: https://frippery.org/busybox/ busybox github: https://github.com/rmyorston/busybox-w32 Using the BusyBox Docker Image for Building Applications : A Complete Guide https://www.sohamkamani.com/docker/busybox-guide/