๐Ÿ‹ Docker ์š”์•ฝ ์ •๋ฆฌ

hyun_wยท2025๋…„ 8์›” 20์ผ

๐Ÿ“Œ Docker Engine
: Docker Engine์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„(Client-Server) ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Docker Images
: Docker Images๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ฝ๊ธฐ ์ „์šฉ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(์ฝ”๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ)์„ ํŒจํ‚ค์ง•ํ•œ ์ƒํƒœ๋กœ, ์ปจํ…Œ์ด๋„ˆ์˜ ์ฒญ์‚ฌ์ง„ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Docker Containers
: Docker Container๋Š” Docker ์ด๋ฏธ์ง€์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ๋Ÿ‰์˜ ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(์ฝ”๋“œ, ๋Ÿฐํƒ€์ž„, ์‹œ์Šคํ…œ ๋„๊ตฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)์„ ํŒจํ‚ค์ง€ํ™”ํ•˜์—ฌ, ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“  ์ผ๊ด€๋˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Docker image vs container

Docker ์ด๋ฏธ์ง€ (๋ถ•์–ด๋นต ํ‹€):

  • ์ •์ (static): ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ฝ๊ธฐ ์ „์šฉ(read-only): ํ‹€ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†์ฃ .

  • ์ฒญ์‚ฌ์ง„: ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„์ด์ž ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์„ค์ •(์ฝ”๋“œ, ๋Ÿฐํƒ€์ž„, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)์ด ์ด ์•ˆ์— ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.

  • docker pull ๋˜๋Š” docker build ๋ช…๋ น์–ด๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ (๋ถ•์–ด๋นต):

  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ธ์Šคํ„ด์Šค: ๋ถ•์–ด๋นต ํ‹€์—์„œ ์ฐ์–ด๋‚ธ ์‹ค์ œ ๋ถ•์–ด๋นต์ž…๋‹ˆ๋‹ค.

  • ๋…๋ฆฝ์ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ•์–ด๋นต์„ ๋™์‹œ์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋“ฏ์ด, ํ•œ ์ด๋ฏธ์ง€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ํœ˜๋ฐœ์„ฑ(ephemeral): ๋ถ•์–ด๋นต์„ ๋จน๊ณ  ๋‚˜๋ฉด ์‚ฌ๋ผ์ง€๋“ฏ์ด, ์ปจํ…Œ์ด๋„ˆ๋Š” ์ •์ง€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด ๊ทธ ์•ˆ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. (๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

๐Ÿ“Œ Dockerfile
: Dockerfile์€ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋ฅผ ๋‹ด์€ ํ…์ŠคํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. Docker๋Š” ์ด Dockerfile์— ๋‚˜์—ด๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ตœ์ข… ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Docker Compose
: Docker Compose๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. YAML ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์˜ ์„ค์ •(์ด๋ฏธ์ง€, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ)์„ ์ •์˜ํ•˜๊ณ , ๋‹จ์ผ ๋ช…๋ น์–ด๋กœ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Docker Hub
: Docker Hub๋Š” ๊ณต๊ฐœ Docker ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“  Docker ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋กœ, GitHub๊ฐ€ ์ฝ”๋“œ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.


busybox

docker run -it --rm busybox


Docker Commands

docker --version
: Displays the installed Docker version

docker info
: Shows system-wide information about Docker

docker help
: Lists all available Docker commands and options


Image Management

docker images
: Lists all images on the local machine

docker pull [image-name]
: Downloads an image from Docker Hub or another registry

docker build -t [image-name]
: Builds a Docker image using a Dockerfile in the current directory and tags it with a name

docker tag [source-image] [target-image:tag]

docker push [image-name]

docker rmi [image-id]


Container Management

docker ps
: Lists all running containers

docker ps -a
: Lists all containers, including stopped ones

docker rm [container-id/name]
: Remove a Container

docker rm -f [container-id/name]
: Forces the removal of a running container

docker stop [container-id/name]
: Stops a running container

docker start [container-id/name]
: Starts a stopped container

docker restart [container-id/name]
: Restarts a container


Container Interaction

docker exec [container-id/name] [command]
: Runs a command inside a running container

docker attach docker logs [container-id/name]
: Attaches your terminal to a running container's standard input/output.

# Shows logs from a container

docker logs [options] [container-id/name]
	-- follow: Streams logs in real-time.


# Forcing Immediate Termination. Sends SIGKILL

docker kill [options] [container-id/name]
	--signal, -s: Specifies the signal to send to the container. By default, it uses SIGKILL.

0๊ฐœ์˜ ๋Œ“๊ธ€