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/

2022-11-21 ยท (updated 2024-02-15) ยท 290 words

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 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/

2022-11-21 ยท (updated 2025-08-22) ยท 153 words

Docker Example - ์‚ฌ์šฉ๋ก€

INTRO Requirement: Docker Hub registration Requirement: Docker install on local login and create and push images to docker hub Docker Login $ docker login Username: neosolaris Password: xxxxxxx Login Succeeded Create Sample image create project dir and files $ mkdir myproject && cd myproject $ vim server.js $ vim Dockerfile server.js var http = require('http'); var handleRequest = function(request, response) { console.log('Received request for URL: ' + request.url); response.writeHead(200); response.end('Hello World!'); }; var www = http.createServer(handleRequest); www.listen(8080); Dockerfile FROM node:6.9.2 EXPOSE 8080 COPY server.js . CMD node server.js ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ช…๋ น ์‹คํ–‰ ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8080 ํ™•์ธ $ docker build -t neosolaris/hello-nodejs:v1 . #์‚ฌ์šฉ์ž๋ช…/์ €์žฅ์†Œ๋ช…:ํƒœ๊ทธ๋ช… $ docker images # ๋นŒ๋“œ์ด๋ฏธ์ง€ ํ™•์ธ $ docker run -d -p 8080:8080 -t neosolaris/hello-nodejs:v1 # ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ $ docker ps # ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ๋“ค ํ™•์ธ $ docker stop <Container ID> # ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ $ docker push neosolaris/hello-nodejs:v1 #์‚ฌ์šฉ์ž๋ช…/์ €์žฅ์†Œ๋ช…:ํƒœ๊ทธ๋ช… Image ์—…๋กœ๋“œ๋Š” ๋„์ปคํ—ˆ๋ธŒ์—์„œ ํ™•์ธ: https://hub.docker.com/u/neosolaris Links https://snowdeer.github.io/docker/2018/02/14/docker-push-image-to-docker-hub/

2022-11-13 ยท 151 words

DockerHub - ๋„์ปคํ—ˆ๋ธŒ ์†Œ๊ฐœ ๋ฐ ํ™œ์šฉ

Intro ๋„์ปค ์ด๋ฏธ์ง€ ์›๊ฒฉ ์ €์žฅ์†Œ ๋งŒ๋“ค์–ด ๋†“์€ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ ํ™œ์šฉ ํšŒ์›๊ฐ€์ž… https://hub.docker.com - ๊ณ„์ • ๋ฐ ์ด๋ฉ”์ผ ๋“ฑ๋ก : ๊ณต๊ฐœ์šฉ(๊ฐœ์ธ)์€ ๋ฌด๋ฃŒ hub.docker.com ์ ‘์† ํ›„ ํšŒ์›๊ฐ€์ž… Email Confirm (์ž์‹ ์˜ ์ด๋ฉ”์ผ์—์„œ ์ธ์ฆ) ๋„์ปคํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ ์ €์žฅ์†Œ ์ƒ์„ฑํ•˜๊ณ  ๋กœ์ปฌ์—์„œ ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€ ์˜ฌ๋ฆฌ๊ธฐ ๋กœ๊ทธ์ธ ํ›„ Repository ์ƒ์„ฑ ex) ์‚ฌ์šฉ์ž๋ช…/์ €์žฅ์†Œ๋ช…:ํƒœ๊ทธ๋ช… neosolaris/mdev:debian-luajit doocker client(my local pc)์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ฌ๋ฆฐ๋‹ค. $ docker login # hub์— ํšŒ์›๊ฐ€์ž…ํ•œ id, password ๋“ฑ๋ก $ docker images # ๋‚ด ์ด๋ฏธ์ง€ ํ™•์ธ (mdev:debian-luajit์ด๋ผ ๊ฐ€์ •) $ docker tag mdev:debian-luajit neosolaris/mdev:debian-luajit $ docker push neosolaris/mdev:debian-luajit #์‚ฌ์šฉ์ž๋ช…/์ €์žฅ์†Œ๋ช…:ํƒœ๊ทธ๋ช… hub.docker.com ์ ‘์† ํ›„ repository ํ™•์ธ ์œ„ ๊ณผ์ • ์ค‘ ๋„์ปคํ—ˆ๋ธŒ์—์„œ ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ local์—์„œ ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋‹ค๋ฉด docker push๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋„์ปคํ—ˆ๋ธŒ์—์„œ ์ž์‹ ์ด ์›ํ•˜๋Š” ์ด๋ฏธ์ง€ ๋˜๋Š” ์ž์‹ ์ด ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค. $ docker pull gcc:bullseye # ๊ณต์‹ debian-bullseye-gcc ํ™˜๊ฒฝ ์ด๋ฏธ์ง€ $ docker neosolaris/mdev:debian-luajit # ๋‚ด ํ”„๋กœ์ ํŠธ ์ด๋ฏธ์ง€ Links https://hub.docker.com

2022-11-13 ยท 129 words

docker-build ๋„์ปค์ด๋ฏธ์ง€ ๋นŒ๋“œ

Intro ํ”„๋กœ์ ํŠธํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ Dockerfile์„ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ์ž‘์„ฑํ•œ๋‹ค. ํ•œ๋ผ์ธ์”ฉ ํ™•์ธํ•˜๋ฉฐ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค. ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด์„œ ํ™•์ธํ•œ๋‹ค. Example Lemo Apps for Luajit ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  Dockerfile์„ ์ƒ์„ฑํ•œ๋‹ค. $ mkdir myproject && cd myproject $ vim Dockerfile ์ƒ์„ฑ๋œ Dockerfile FROM nickblah/luajit:2.1.0-beta3-buster ## Default root Env Setup First WORKDIR /root RUN \ echo 'set -o vi' >> .bashrc ## LEMO Program Set WORKDIR /usr/local COPY lemo ./lemo RUN \ echo 'exec "/usr/local/lemo/lib/main.lua" "$@"' > ./bin/lemo &&\ chmod 755 ./bin/lemo Image Build $ docker build -t buster:lemo . # ๋นŒ๋“œ $ docker images # ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€ ํ™•์ธ $ docker run --rm -it buster:lemo bash # ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ Links https://docs.docker.com/engine/reference/builder https://www.44bits.io/ko/post/easy-deploy-with-docker

2022-11-09 ยท 110 words