๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Cloud/Docker

03 Docker ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ

by The Future Engineer, Lucy 2024. 9. 28.

โ€ป '์‹œ์ž‘ํ•˜์„ธ์š”! ๋„์ปค/์ฟ ๋ฒ„๋„คํ‹ฐ์Šค' ์ฑ…๊ณผ ๊ต์œก์„ ํ†ตํ•ด ๋“ค์€ ๋‚ด์šฉ, ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ† ๋Œ€๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

01 Docker ์„ค์น˜ํ•˜๊ธฐ

โ€ป์ด ๊ธ€์€ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์— ๋งž์ถฐ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.Docker ์„ค์น˜Windows Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker

lucy-devblog.tistory.com

์ด์ „ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋จผ์ € Docker๋ฅผ ์„ค์น˜ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Docker ์„ค์น˜๊ฐ€ ๋๋‚ฌ์œผ๋ฉด ์ด์ œ๋ถ€ํ„ฐ ๋„์ปค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰

docker search [OPTIONS] TERM

Dockerfile์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ฐพ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ https://hub.docker.com/์—์„œ ์ฐพ์•„๋ณด๋Š” ํŽธ์ด ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐœ์ธ์ ์œผ๋กœ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ ์ด ๋•Œ ํƒœ๊ทธ๋Š” ๋ฌด์—‡์„ ๋งํ•˜๋Š” ๊ฑธ๊นŒ์š”? ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

docker image pull [OPTIONS] NAME[:TAG|@DIGEST]
# Aliases
docker pull

์œ„ ๋ช…๋ น์–ด๋Š” registry์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฏธ์ง€๋Š” Docker Hub์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” Dockerfile์„ runํ•  ๋•Œ image๊ฐ€ ๋กœ์ปฌ์— ์—†๋‹ค๋ฉด ์•Œ์•„์„œ registry์—์„œ ์ฐพ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•  ์ผ์ด ์ ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ pullํ•  ๋•Œ 'Tag'๋‚˜ 'Digest'๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'Tag'๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ด๋ฏธ์ง€๋ฅผ ๋ถ€์—ฌํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. 'Tag'๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์ธ latest๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ latest์˜ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œ ์‹œ์ ์— ๋”ฐ๋ผ ๋ฒ„์ „์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 'Tag'๋ฅผ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

'Digest'๋Š” ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณ ์œ ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ผ๋ฉด ๋™์ผํ•œ digest๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๊ฐ€ ๋ณ€ํ•œ๋‹ค๋ฉด digest ๋˜ํ•œ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๋ฐ”๋€Œ๊ธฐ๋ฅผ ์›์น˜ ์•Š๋Š”๋‹ค๋ฉด digest๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ญ์ƒ ๊ฐ™์€ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ docker pull ubuntu:24.04
24.04: Pulling from library/ubuntu
31e907dcc94a: Pull complete
Digest: sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
Status: Downloaded newer image for ubuntu:24.04
docker.io/library/ubuntu:24.04
$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
ubuntu                   24.04     edbfe74c41f8   3 weeks ago    78.1MB
$ docker pull ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
docker.io/library/ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee: Pulling from library/ubuntu
31e907dcc94a: Pull complete
Digest: sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
Status: Downloaded newer image for ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
docker.io/library/ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
ubuntu                   <none>    edbfe74c41f8   3 weeks ago    78.1MB

์ด์™€ ๊ฐ™์ด 'Tag' ๋Œ€์‹  'Digest'๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณดํ†ต 'Tag'๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Option Description
-a, --all-tags ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ repository์— ์žˆ๋Š” ํƒœ๊ทธ๋œ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ
--disable-content-trust ๊ธฐ๋ณธ๊ฐ’์€ true. ์ด๋ฏธ์ง€ ๊ฒ€์ฆ์„ ํ•˜์ง€ ์•Š์Œ.
--platform ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”Œ๋žซํผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ.
-q, --quiet ๋‚ด์šฉ์ด ์žฅํ™ฉํ•˜๊ฒŒ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋„๋ก ํ•จ.

์ด๋ฏธ์ง€ ๋ชฉ๋ก ๋ณด๊ธฐ

docker image ls [OPTIONS] [REPOSITORY[:TAG]]
# Aliases
docker image list
docker images

๊ธฐ๋ณธ ๋„์ปค ์ด๋ฏธ์ง€๋“ค์€ ์ƒ์œ„ ์ด๋ฏธ์ง€, ์ €์žฅ์†Œ ๋ฐ ํƒœ๊ทธ, ํฌ๊ธฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 

๋„์ปค ์ด๋ฏธ์ง€๋“ค์€ ๊ฐ๊ฐ์˜ ์บ์‹œ๋ฅผ ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋ฉฐ 'docker build' ์‹œ ์†๋„๋ฅผ ๋†’์ด๋Š” ์ค‘๊ฐ„ ๋ ˆ์ด์–ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ค‘๊ฐ„ ๋ ˆ์ด์–ด๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

`-a, --all` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ฐ„ ์ด๋ฏธ์ง€๋„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™ธ์—๋„ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Option Description
-a, --all ๋ชจ๋“  ์ด๋ฏธ์ง€ ์ถœ๋ ฅ.(์ค‘๊ฐ„์ด๋ฏธ์ง€๋„ ํฌํ•จ)
--digests digest๋ฅผ ์ถœ๋ ฅ
-f, --filter ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ถœ๋ ฅ.
--format ์‚ฌ์šฉ์ž ์ง€์ • ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์ถœ๋ ฅ ํ˜•์‹.
ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์ถœ๋ ฅ ํฌ๋งท์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://docs.docker.com/go/formatting/ ์ฐธ์กฐ
--no-trunc ์ถœ๋ ฅ์„ ์ž๋ฅด์ง€ ์•Š์Œ.
-q, --quiet ์ด๋ฏธ์ง€ ID๋“ค๋งŒ ๋ณด์—ฌ์คŒ.

์ด๋ฏธ์ง€ ์‚ญ์ œํ•˜๊ธฐ

docker image rm [OPTIONS] IMAGE [IMAGE...]
# ALiases
docker image remove
docker rmi

ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฏธ์ง€๋“ค์„ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€์— ์—ฌ๋Ÿฌ ํƒœ๊ทธ๊ฐ€ ์žˆ๋‹ค๋ฉด ํƒœ๊ทธ๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํƒœ๊ทธ๋งŒ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด๋ฏธ์ง€๋ฅผ ์ง€์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์šฐ์„  ํƒœ๊ทธ๋ฅผ ๋จผ์ € ์ง€์šด ํ›„์— ์ด๋ฏธ์ง€๋ฅผ ์ง€์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€์— ํƒœ๊ทธ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ์ด๋ฏธ์ง€์™€ ํƒœ๊ทธ๊ฐ€ ๋ชจ๋‘ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋Š” ํƒœ๊ทธ๊ฐ€ ์•„๋‹Œ ID, digest๋ฅผ ์ด์šฉํ•ด์„œ๋„ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋•Œ, ๋™์ผํ•œ `Image ID`๋ฅผ ๊ฐ€์ง„ ์ด๋ฏธ์ง€๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ `Image ID`๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ญ์ œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ `-f` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์•„์ด๋””๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง€์šด ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

$ docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
ubuntu                   <none>    edbfe74c41f8   3 weeks ago    78.1MB
$ docker rmi edbfe74c41f8
Untagged: ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
Deleted: sha256:edbfe74c41f8a3501ce542e137cf28ea04dd03e6df8c9d66519b6ad761c2598a
Deleted: sha256:f36fd4bb7334b7ae3321e3229d103c4a3e7c10a263379cc6a058b977edfb46de

์˜ต์…˜์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Option Description
-f, --force ์ด๋ฏธ์ง€๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œ.
--no-prune ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉด ์ง€์šธ ์ˆ˜ ์—†์Œ.

๋ชจ๋“  ์ด๋ฏธ์ง€ ์‚ญ์ œํ•˜๊ธฐ

docker image prune [OPTIONS]

 

๋ชจ๋“  `dangling image`๋“ค์„ ์ง€์›๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ `dangling image`๋ž€ Repository๊ฐ€ none์œผ๋กœ ํ‘œ๊ธฐ๋˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ `dangling image`๋Š” ๋™์ผํ•œ ์ด๋ฆ„(Name&Tag)์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ Multi-Stage ๋นŒ๋“œ ์ค‘ ์ƒ์„ฑ๋œ ์ค‘๊ฐ„ ์ด๋ฏธ์ง€์ธ ์ƒํ™ฉ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

`-a`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€๋„ ๋ชจ๋‘ ์ง€์›๋‹ˆ๋‹ค.

Option Description
-a, --all dangling ์ด๋ฏธ์ง€ ์ด์™ธ์—๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€ ๋ชจ๋‘ ์ œ๊ฑฐํ•จ.
--filter ํ•„ํ„ฐ ๊ฐ’ ์ œ๊ณต.
-f, --force ํ™•์ธ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ ์•ˆ ํ•จ.

์ด๋ฏธ์ง€ ์ •๋ณด ์กฐํšŒ

docker image inspect [OPTIONS] IMAGE [IMAGE...]

ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

$ docker image inspect ubuntu:24.04
[
    {
        "Id": "sha256:edbfe74c41f8a3501ce542e137cf28ea04dd03e6df8c9d66519b6ad761c2598a",
        "RepoTags": [
            "ubuntu:24.04"
        ],
        "RepoDigests": [
            "ubuntu@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2024-08-01T14:23:55.913663537Z",
        "DockerVersion": "24.0.7",
        "Author": "",
        "Config": {
            
                                           ...
                                           
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:f36fd4bb7334b7ae3321e3229d103c4a3e7c10a263379cc6a058b977edfb46de"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
$ docker inspect ubuntu:24.04 -f "{{ .Architecture }}"
amd64

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ์™€ `-f`๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

์˜ต์…˜์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Option Description
-f, --format ์‚ฌ์šฉ์ž ์ง€์ • ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์ถœ๋ ฅ ํ˜•์‹.
ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์ถœ๋ ฅ ํฌ๋งท์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://docs.docker.com/go/formatting/ ์ฐธ์กฐ

 

์ด์ƒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

'Cloud > Docker' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

02 Docker๋ž€?  (1) 2024.09.28
01 Docker ์„ค์น˜ํ•˜๊ธฐ  (1) 2024.09.28