Docker-Busybox
Intro busybox๋ ์๊ณ ๊ฐ๋ณ๊ณ ๋น ๋ฅธ POSIX ํ์ค ์ ํธ ๋ชจ์์ด๋ค. docker์์ ์ฌ๋ฌ ๊ฐ์ง๋ก ์์ฉํด์ ์ฌ์ฉํ ์ ์๋ค. ์์ฉ ์๋ฒ ๋๋ ์์คํ ์ ๋น๋ํ๊ธฐ Kubernates์ init container๋ก ์ฌ์ฉํ๊ธฐ HTTP ์น์๋ฒ๋ก ๋๋ฆฌ๊ธฐ ๊ฐ์์ปจํ ์ด๋ ๋ณผ๋ฅจ์๋ฒ(์คํ ๋ฆฌ์ง)๋ก ์ฌ์ฉํ๊ธฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ก busybox ์ต์ ๋ฒ์ ์ด๋ฏธ์ง ๋ฐ๊ณ ์คํ $ docker run -it --rm busybox busybox + myapp : myapp์ ๋ฆฌ๋ ์คํ๊ฒฝ์์ ์ ์ ์ปดํ์ผํ ๋ฐ์ด๋๋ฆฌ $ cat Dockerfile # Write Dockerfile FROM busybox COPY ./my-static-binary /my-static-binary CMD ["/my-static-binary"] $ docker build -t busybox-myapp . # Build Image $ docker run -t --rm busybox-myapp # Run Container busybox + httpserver : ์น์๋ฒ๋์(httpserver๋ static compile binary) $ cat Dockerfile # Write Dockerfile FROM busybox COPY ./httpserver /home/ CMD /home/httpserver $ docker build -t go-server . # Build Image $ docker run -p 8080:8080 --rm -it go-server # Run Container $ curl -v http://localhost:8080/ # Test 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)๋ ์ ๋ง ๊ฐ๋ณ๊ฒ ์คํํ๊ณ ๋ฐฐํฌํ ์ ์๋ ํ๊ฒฝ์ด๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ์ด๊ฒ์ ๋ํ ํ์ฉ์ ๊ฐ๋ฐํ๊ฒฝ์ด๋ ํฐ๊ท๋ชจ์ ์คํํ๊ฒฝ๋ณด๋ค๋ ์๊ณ ๊ฐ๋ฒผ์ด ํ๊ฒฝ์์ ํจ์จ์ ์ธ ์ด์ฉ์ด ํ์ํ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. Links How to Use th Busybox Docker Official Image https://www.docker.com/blog/use-cases-and-tips-for-using-the-busybox-docker-official-image/ Using the BusyBox Docker Image for Building Applications : A Complete Guide https://www.sohamkamani.com/docker/busybox-guide/