Skip to main content

05. Docker ์‚ดํŽด๋ณด๊ธฐ

About 2 minDevOpsDockercrashcoursepyrasis.comdockerdevops

05. Docker ์‚ดํŽด๋ณด๊ธฐ ๊ด€๋ จ

๋ชฉ์ฐจ

์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

05. Docker ์‚ดํŽด๋ณด๊ธฐ
์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

์ง€๊ธˆ๊นŒ์ง€ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ์žฅ์—์„œ๋Š” ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ์„ ๊บผ๋‚ด๋Š” ๋ฐฉ๋ฒ•, ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


history ๋ช…๋ น์œผ๋กœ ์ด๋ฏธ์ง€ ํžˆ์Šคํ† ๋ฆฌ ์‚ดํŽด๋ณด๊ธฐ

์•ž์—์„œ ์ƒ์„ฑํ•œ hello:0.1 ์ด๋ฏธ์ง€์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์กฐํšŒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo docker history hello:0.1
# 
# IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
# 8307ff628ec8   5 minutes ago   /bin/sh -c #(nop)  EXPOSE 443                   0B
# adbb8a7ef64d   5 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
# a405f9d28415   5 minutes ago   /bin/sh -c #(nop)  CMD ["nginx"]                0B
# a9726f7e681e   5 minutes ago   /bin/sh -c #(nop) WORKDIR /etc/nginx            0B
# 78f354dbdbcc   5 minutes ago   /bin/sh -c #(nop)  VOLUME [/data /etc/nginx/โ€ฆ   0B
# 66f885084c19   5 minutes ago   /bin/sh -c chown -R www-data:www-data /var/lโ€ฆ   0B
# 5c54eb835f57   5 minutes ago   /bin/sh -c echo "\ndaemon off;" >> /etc/nginโ€ฆ   1.46kB
# 9fc2f61ad2f4   5 minutes ago   /bin/sh -c apt install -y nginx                 55.6MB
# 9c80ad1c1c34   6 minutes ago   /bin/sh -c apt update                           36.2MB
# 69b49943b930   6 minutes ago   /bin/sh -c #(nop)  MAINTAINER Foo Bar <foo@bโ€ฆ   0B
# 2dc39ba059dc   7 days ago      /bin/sh -c #(nop)  CMD ["bash"]                 0B
# <missing>      7 days ago      /bin/sh -c #(nop) ADD file:a7268f82a86219801โ€ฆ   77.8MB

docker history <์ด๋ฏธ์ง€ ์ด๋ฆ„>:<ํƒœ๊ทธ> ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋Œ€์‹  ์ด๋ฏธ์ง€ ID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ Dockefile์— ์„ค์ •ํ•œ ๋Œ€๋กœ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


cp ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ ๊บผ๋‚ด๊ธฐ

hello-nginx ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ์„ ๊บผ๋‚ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo docker cp hello-nginx:/etc/nginx/nginx.conf ./

docker cp <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„>:<๊ฒฝ๋กœ> <ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ> ํ˜•์‹์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— nginx.conf ํŒŒ์ผ์ด ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


commit ๋ช…๋ น์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•˜๊ธฐ

docker commit ๋ช…๋ น์€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

hello-nginx ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ํŒŒ์ผ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์—ˆ๋‹ค๊ณ  ์น˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2

docker commit <์˜ต์…˜> <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„> <์ด๋ฏธ์ง€ ์ด๋ฆ„>:<ํƒœ๊ทธ> ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋Œ€์‹  ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

-a "Foo Bar <foo@bar.com>"๊ณผ -m "add hello.txt" ์˜ต์…˜์œผ๋กœ ์ปค๋ฐ‹ํ•œ ์‚ฌ์šฉ์ž์™€ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. hello-nginx ์ปจํ…Œ์ด๋„ˆ๋ฅผ hello:0.2 ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo docker images
# 
# REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
# hello        0.2       011ff3ff87e9   14 seconds ago   170MB
# hello        0.1       8307ff628ec8   6 minutes ago    170MB
# ubuntu       22.04     2dc39ba059dc   7 days ago       77.8MB

hello:0.2 ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


diff ๋ช…๋ น์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ํ™•์ธํ•˜๊ธฐ

docker diff ๋ช…๋ น์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ต ๊ธฐ์ค€์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

sudo docker diff hello-nginx
# 
# C /etc
# C /etc/nginx
# A /etc/nginx/site-enabled
# A /data
# C /var
# C /var/lib
# C /var/lib/nginx
# A /var/lib/nginx/body
# A /var/lib/nginx/fastcgi
# A /var/lib/nginx/proxy
# A /var/lib/nginx/scgi
# A /var/lib/nginx/uwsgi
# C /run
# A /run/nginx.pid

docker diff <์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„> ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋Œ€์‹  ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

A๋Š” ์ถ”๊ฐ€๋œ ํŒŒ์ผ, C๋Š” ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ, D๋Š” ์‚ญ์ œ๋œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.


inspect ๋ช…๋ น์œผ๋กœ ์„ธ๋ถ€ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ

docker inspect ๋ช…๋ น์€ ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo docker inspect hello-nginx
#
# [
#     {
#         "Id": "9f4bb4c4a3d8698a31507febffba19a655caab5a0ee78452cc2c64ea406af7bd",
#         "Created": "2022-09-09T03:11:49.391803068Z",
#         "Path": "nginx",
#         "Args": [],
#         "State": {
#             "Status": "running",
#             ... ์ƒ๋žต ...
#         },
#         "Image": "sha256:8307ff628ec8900bc7a80eecc54bf6f21b6019ee96d22ca3e4152a06f704756d",
#         ... ์ƒ๋žต ...
#         "Name": "/hello-nginx",
#         "RestartCount": 0,
#         "Driver": "overlay2",
#         "Platform": "linux",
#         ... ์ƒ๋žต ...
#         "HostConfig": {
#             ... ์ƒ๋žต ...
#             "NetworkMode": "default",
#             "PortBindings": {
#                 "80/tcp": [
#                     {
#                         "HostIp": "",
#                         "HostPort": "80"
#                     }
#                 ]
#             },
#             ... ์ƒ๋žต ...
#         },
#         ... ์ƒ๋žต ...
#         "Config": {
#             "Hostname": "9f4bb4c4a3d8",
#             "Domainname": "",
#             "User": "",
#             "AttachStdin": false,
#             "AttachStdout": false,
#             "AttachStderr": false,
#             "ExposedPorts": {
#                 "443/tcp": {},
#                 "80/tcp": {}
#             },
#             "Tty": false,
#             "OpenStdin": false,
#             "StdinOnce": false,
#             "Env": [
#                 "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
#             ],
#             "Cmd": [
#                 "nginx"
#             ],
#             "Image": "hello:0.1",
#             "Volumes": {
#                 "/data": {},
#                 "/etc/nginx/site-enabled": {},
#                 "/var/log/nginx": {}
#             },
#             "WorkingDir": "/etc/nginx",
#             "Entrypoint": null,
#             "OnBuild": null,
#             "Labels": {}
#         },
#         "NetworkSettings": {
#             "Bridge": "",
#             "SandboxID": "0adee39c61d22d570a50a3e9ba174dc7901ffea732f6aca75e5ea00a330f9fa3",
#             "HairpinMode": false,
#             "LinkLocalIPv6Address": "",
#             "LinkLocalIPv6PrefixLen": 0,
#             "Ports": {
#                 "443/tcp": null,
#                 "80/tcp": [
#                     {
#                         "HostIp": "0.0.0.0",
#                         "HostPort": "80"
#                     },
#                     {
#                         "HostIp": "::",
#                         "HostPort": "80"
#                     }
#                 ]
#             },
#             ... ์ƒ๋žต ...
#         }
#     }
# ]
# }]

docker inspect <์ด๋ฏธ์ง€ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„> ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋Œ€์‹  ์ด๋ฏธ์ง€ ID๋‚˜, ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.


์ด์ฐฌํฌ (MarkiiimarK)
Never Stop Learning.