λ컀λ μ λμΈ νμΌ μμ€ν μ μ¬μ©ν©λλ€. μ΄λ νλμ μ΄λ―Έμ§λ‘λΆν° μ¬λ¬ 컨ν μ΄λλ₯Ό λ§λ€ μ μλ λ°©λ²μ μ 곡νκ³ , μ΄λ―Έμ§μ λ³κ²½λ λ΄μ©μ μ μ₯ν μ μλλ‘ ν΄μ€λλ€. λ°μ΄ν°λ² μ΄μ€, μΉ νλ‘κ·Έλ¨ λ± μ 무μμ μ¬μ©νλ μ ν리μΌμ΄μ μμ λ°μνλ λ°μ΄ν°μ μ κ·Όνκ³ μ΄κ²μ 곡μ νκΈ° μν΄μ λ컀 λ³Όλ₯¨ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€.
λν, μ 곡νλ μλΉμ€μ λ°μ΄ν°μ λ‘μ§μ λ°λμ λΆλ¦¬λμ΄μΌ νλ€λ νΉμ§μ΄ μμ΅λλ€. μ ν리μΌμ΄μ μμ λ°μνλ μ¬λ¬ κ°μ§ μν©μ΄ λ°μ΄ν°μ μν₯μ μ£Όμ§ μκ³ μΈμ λ λ€λ₯Έ 컨ν μ΄λλ‘ μ΄μ ν μ μλ€λ©΄ μ΄μμλ λ°μ΄ν°λ₯Ό μμ νκ² κ΄λ¦¬νκ³ μ΄μν μ μλ€λ μ μ΄ μμ΅λλ€.
λ컀 λ³Όλ₯¨μ 컨ν μ΄λμμ μμ±, μ¬μ¬μ©ν μ μκ³ νΈμ€νΈ μ΄μ체μ μμ μ§μ μ κ·Όμ΄ κ°λ₯ν©λλ€. λν 보쑴λμ΄μΌ νλ λ°μ΄ν°λ₯Ό μ μ§(λ°μ΄ν° μμμ±κ³Ό μ§μμ±)νκΈ° μν λ©μ»€λμ¦μ μ 곡ν©λλ€. μΌλ°μ μΌλ‘ 컨ν μ΄λ λ΄λΆμ λ°μ΄ν°λ 컨ν μ΄λμ λΌμ΄νμ¬μ΄ν΄κ³Ό μ°κ΄λμ΄ μ»¨ν μ΄λ μ’ λ£ μ μμ λ©λλ€. μ΄λ₯Ό μμμ μΌλ‘ μ μ§νκΈ° μν λ°©λ²μΌλ‘ λ컀 λ³Όλ₯¨μ μ¬μ©νλ©΄ 컨ν μ΄λκ° μμ λμ΄λ λ³Όλ₯¨μ λ 립μ μΌλ‘ μ΄μλκΈ° λλ¬Έμ ν¨κ» μμ λμ§ μλ νΉμ§μ΄ μμ΅λλ€.
Docker Volume Type
νΈμ€νΈ νμΌ μμ€ν μ νΉμ λλ ν°λ¦¬μ 컨ν μ΄λμ λλ ν°λ¦¬λ₯Ό μ°κ²°νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν΄ λ€μκ³Ό κ°μ λ°©λ²μ΄ μ 곡λ©λλ€.
Volume
- λ컀μμ κΆμ₯νλ λ°©λ²μΌλ‘ "docker volume create λ³Όλ₯¨ μ΄λ¦"μ ν΅ν΄ λ³Όλ₯¨μ μμ±ν©λλ€.
- λ컀 λ³Όλ₯¨μ λ컀 λͺ λ Ήμ΄λ₯Ό ν΅ν΄ κ΄λ¦¬ν μ μμ΅λλ€.
- μ¬λ¬ 컨ν μ΄λ κ°μ μμ νκ² κ³΅μ ν μ μμ΅λλ€.
- λ³Όλ₯¨ λλΌμ΄λ²λ₯Ό ν΅ν΄ μ격 νΈμ€νΈ λ° ν΄λΌμ°λ νκ²½μ λ³Όλ₯¨ λ΄μ©μ μ μ₯νκ³ μνΈνν μ μμ΅λλ€.
- μ λ³Όλ₯¨μΌλ‘ μ§μ λ μμμ λ°μ΄ν°λ₯Ό 미리 μ±μ°κ³ 컨ν μ΄λμ μ°κ²°νλ©΄ 컨ν μ΄λ λ΄μμ λ°λ‘ λ°μ΄ν° μ¬μ©μ΄ κ°λ₯ν©λλ€.
# Volume μμ±
toby@tobykakao:~$ docker volume create my-appovol-1
my-appovol-1
# μμ±λ Volume μ‘°ν
toby@tobykakao:~$ docker volume ls
DRIVER VOLUME NAME
local 3f6a2fd160d05eca6fd05c56ca5ab800e8a0d4490b723de08549fe072221176d
local my-appovol-1
# Volume κ²μ¬, Volumeμ΄ μ¬λ°λ₯΄κ² μμ±λκ³ λ§μ΄νΈλμλμ§ νμΈνλλ° μ¬μ©
toby@tobykakao:~$ docker volume inspect my-appovol-1
[
{
"CreatedAt": "2024-11-10T09:01:29Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/my-appovol-1/_data",
"Name": "my-appovol-1",
"Options": null,
"Scope": "local"
}
]
# --mount μ΅μ
μ μ΄μ©ν Volume μ§μ
toby@tobykakao:~$ docker run -d --name vol-test1 \
> --mount source=my-appvol-1,target=/app \
> ubuntu:20.04
Unable to find image 'ubuntu:20.04' locally
20.04: Pulling from library/ubuntu
1b9f3c55f9d4: Pull complete
Digest: sha256:8e5c4f0285ecbb4ead070431d29b576a530d3166df73ec44affc1cd27555141b
Status: Downloaded newer image for ubuntu:20.04
2fde8abdb47e4bccb2609bc7a98c0eb90b0cb7f592508fb2b0aea0d6b5f12f43
# -v μ΅μ
μ μ΄μ©ν Volume μ§μ
toby@tobykakao:~$ docker run -
d --name vol-test2 \
> -v my-appvol-1:/var/log \
> ubuntu:20.04
58e58e73c361a0df8d118f2a9450e1018278d94ed04d3809bfeae0d46c96f57d
# μ¬μ μ docker Volume createλ₯Ό νμ§ μμλ host Volume μ΄λ¦μ μ°λ©΄ μλ μμ±
toby@tobykakao:~$ docker run -d --name vol-test3 \
> -v my-appvol-2:/var/log \
> ubuntu:20.04
# "Mounts"λ₯Ό μ°Ύμμ νμΈ
toby@tobykakao:~$ docker inspect --format="{{ .Mounts }}" vol-test1
[{volume my-appvol-1 /var/lib/docker/volumes/my-appvol-1/_data /app local z true }]
toby@tobykakao:~$ docker volume rm my-appvol-1
Error response from daemon: remove my-appvol-1: volume is in use - [2fde8abdb47e4bccb2609bc7a98c0eb90b0cb7f592508fb2b0aea0d6b5f12f43, 58e58e73c361a0df8d118f2a9450e1018278d94ed04d3809bfeae0d46c96f57d]
# μ°κ²°λ Container μ κ±°ν Volume μμ
toby@tobykakao:~$ docker stop vol-test1 vol-test2
vol-test1
vol-test2
toby@tobykakao:~$ docker rm vol-test1 vol-test2
vol-test1
vol-test2
toby@tobykakao:~$ docker volume rm my-appvol-1
my-appvol-1
bind mount
- λ컀 λ³Όλ₯¨ κΈ°λ²μ μ¬μ©μ΄ μ νμ μ λλ€.
- Host file System μ λκ²½λ‘: 컨ν μ΄λ λ΄λΆ κ²½λ‘λ‘ μ§μ λ§μ΄νΈνμ¬ μ¬μ©ν©λλ€.
- μ¬μ©μκ° νμΌ λλ λλν 리λ₯Ό μμ±νλ©΄ ν΄λΉ νΈμ€νΈ νμΌ μμ€ν μ μμ μ κΆνμΌλ‘ μ°κ²°μ΄ λκ³ , μ‘΄μ¬νμ§ μλ κ²½μ° μλμΌλ‘ μμ±λ©λλ€. μ΄λ, μλμΌλ‘ μμ±λ Directoryλ₯Ό λ£¨νΈ μ¬μ©μ μμ κ° λ©λλ€.
- 컨ν μ΄λ μ€ν μ μ§μ νμ¬ μ¬μ©νκ³ , 컨ν μ΄λ μ κ±° μ λ°μΈλ Mountλ ν΄μ λμ§λ§ Host Directoryλ μ μ§λ©λλ€.
# --mount μ΅μ
μΌλ‘ μ¬μ μ μμ±ν κ²½λ‘μ λ°μΈλ λ§μ΄νΈ μ§μ .
toby@tobykakao:~$ mkdir /home/toby/target
toby@tobykakao:~$ docker run -d -it --name bind-test1 \
> --mount type=bind,source="$(pwd)"/target,target=/var/log \
> centos:8
ee9cc21f656e2f8520664c6fb30de50c9b54fe23d58a95139bb7bc2f3259c1ed
# -v μ΅μ
μΌλ‘ μ¬μ μ μμ±ν λλ ν°λ¦¬μ λ°μΈλ λ§μ΄νΈ μ§μ .
toby@tobykakao:~$ docker run -d -it --name bind-test2 \
> -v "$(pwd)"/target:/var/log \
> centos:8
# μ¬μ μ μμ±νμ§ μμ λλ ν°λ¦¬μ λ°μΈλ λ§μ΄νΈ μ§μ .
toby@tobykakao:~$ docker run -d -it --name bind-test3 \
> -v /home/toby/target2:/var/log \
> centos:8
fd8df171064f4a3c7832370e97b7b2840f6c1b626bbfb218ffa1bd1c6b0091f9
# μ¬μ μ μμ±νμ§ μμ λλ ν°λ¦¬μ μ½κΈ° μ μ© λ° μ½κ³ μ°κΈ° λ°μΈλ λ§μ΄νΈ μ§μ .
toby@tobykakao:~$ docker run -d -it --name bind-test4 \
> -v /home/toby/target_ro:/app1:ro \
> -v /home/toby/target_rw:/app2:rw \
> centos:8
12e0b26e5dde3fd0be5dbdf4fbd172a303ccdc0067db56a2d1969fdd20cb24df
# μ¬μ μ μμ±ν λλ ν°λ¦¬λ νμ¬ μ¬μ©μ μμ μ΄κ³ , -vμ μ§μ ν μ λκ²½λ‘λ μλμΌλ‘ μμ±λκ³ λ£¨νΈ μ¬μ©μ μμ κ° λ¨.
toby@tobykakao:~$ ls -l
total 765180
drwx------ 3 toby toby 4096 Oct 30 12:29 snap
drwxrwxr-x 2 toby toby 4096 Nov 15 10:56 target
drwxr-xr-x 2 root root 4096 Nov 15 11:05 target2
drwxr-xr-x 2 root root 4096 Nov 15 11:06 target_ro
drwxr-xr-x 2 root root 4096 Nov 15 11:06 target_rw
# λ°μΈλ λ§μ΄νΈλ 컨ν
μ΄λ μ‘°ν.
toby@tobykakao:~$ docker inspect --format="{{ .HostConfig.Binds }}" bind-test2
[/home/toby/target:/var/log]
toby@tobykakao:~$ docker inspect --format="{{ .HostConfig.Binds }}" bind-test4
[/home/toby/target_ro:/app1:ro /home/toby/target_rw:/app2:rw]
tmpfs mount
- 컨ν μ΄λκ° μ€μ§λ νμλ λ°μ΄ν°λ₯Ό μ μ§ν μ μμ§λ§ tmpfs λ§μ΄νΈ λ°©λ²μ μμμ μ΄λ©° νΈμ€νΈ λ©λͺ¨λ¦¬μμλ§ μ§μλλ―λ‘ μ»¨ν μ΄λκ° μ€μ§λλ©΄ tmpfs λ§μ΄νΈκ° μ κ±°λκ³ λ΄λΆμ κΈ°λ‘λ νμΌμ μ μ§λμ§ μμ΅λλ€.
- Host λλ Container μ°κΈ° κ°λ₯ κ³μΈ΅μμ μ§μνμ§ μμ§λ§ μ€μν νμΌμ μμλ‘ μ¬μ©νλ λ°©λ²μ μ μ©ν©λλ€.
- 컨ν μ΄ν° μ€νμ μ§μ νμ¬ μ¬μ©νκ³ , 컨ν μ΄λ μ κ±° μ μλ ν΄μ λ©λλ€.
# --mount μ΅μ
μΌλ‘ tmpfs λ§μ΄νΈ
> --mount type=tmpfs,destination=/var/www/html \
> httpd:2
Unable to find image 'httpd:2' locally
2: Pulling from library/httpd
6d29a096dd42: Pull complete
4c3f91c84bc0: Pull complete
4f4fb700ef54: Pull complete
deb8a6f98fe9: Pull complete
5e6d32c400c1: Pull complete
ee212e1cfb15: Pull complete
Digest: sha256:6bdbdf5ac16ac3d6ef543a693fd5dfafae2428b4b0cdc52a480166603a069136
Status: Downloaded newer image for httpd:2
04df3c05e3476aaf8d696bd22519e9498061a96e0057fc7ab34a1a55e7ad401f
# --tmpfs μ΅μ
μΌλ‘ tmpfs λ§μ΄νΈ.
toby@tobykakao:~$ docker run -d -it --name tmpfs-test2 \
> --tmpfs /var/www/html \
> httpd:2
9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce
# tmpfs λ§μ΄νΈλ 컨ν
μ΄λ μ‘°ν.
toby@tobykakao:~$ docker inspect tmpfs-test2
[
{
"Id": "9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce",
"Created": "2024-11-15T11:18:44.243700032Z",
"Path": "httpd-foreground",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 4568,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-11-15T11:18:44.421667934Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:6a93c561478be9882b1a75f9004a0f830bbafeb242a20d39240e2b4dc8f398dc",
"ResolvConfPath": "/var/lib/docker/containers/9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce/hostname",
"HostsPath": "/var/lib/docker/containers/9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce/hosts",
"LogPath": "/var/lib/docker/containers/9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce/9e09d175ac3e5a5b3e4cca18cfbf118224bf5e08454cbf887d3d1c80a0c5b8ce-json.log",
"Name": "/tmpfs-test2",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "docker-default",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
30,
110
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "private",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"Tmpfs": {
"/var/www/html": ""
},
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": [],
"BlkioDeviceWriteBps": [],
"BlkioDeviceReadIOps": [],
"BlkioDeviceWriteIOps": [],
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/74789a9157e60eb460ca43684f134e781b25d59f67387de2a19f03d798e658b6-init/diff:/var/lib/docker/overlay2/8e70d5833890cc452f2bc44ddb4480e926a38058c714c5856709a0970293a760/diff:/var/lib/docker/overlay2/4b64fe3a3d8404d590318d8d9cb2039e1895f44179fcc258f869d0760409b5f4/diff:/var/lib/docker/overlay2/30ac91feba740490cec06075561dd76194f1edbd89f166c39ca291e2eca08594/diff:/var/lib/docker/overlay2/89a49e6ac47b82dcb37241a86b332b6f823e41cc4cc6f1db8d9ba66495107cb9/diff:/var/lib/docker/overlay2/5aade70bd0f9cb3beb1c133dd45556d3b6595b13ba510c85d973f2a6f101b8fc/diff:/var/lib/docker/overlay2/553e90a50ccd6b7998b776a5fbdf77d0263236d9a552c089490c193a52a756b0/diff",
"MergedDir": "/var/lib/docker/overlay2/74789a9157e60eb460ca43684f134e781b25d59f67387de2a19f03d798e658b6/merged",
"UpperDir": "/var/lib/docker/overlay2/74789a9157e60eb460ca43684f134e781b25d59f67387de2a19f03d798e658b6/diff",
"WorkDir": "/var/lib/docker/overlay2/74789a9157e60eb460ca43684f134e781b25d59f67387de2a19f03d798e658b6/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "9e09d175ac3e",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"HTTPD_PREFIX=/usr/local/apache2",
"HTTPD_VERSION=2.4.62",
"HTTPD_SHA256=674188e7bf44ced82da8db522da946849e22080d73d16c93f7f4df89e25729ec",
"HTTPD_PATCHES="
],
"Cmd": [
"httpd-foreground"
],
"Image": "httpd:2",
"Volumes": null,
"WorkingDir": "/usr/local/apache2",
"Entrypoint": null,
"OnBuild": null,
"Labels": {},
"StopSignal": "SIGWINCH"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "e4304b6b00268bcd0cc1a64a276c26303496447c0c125f741436da7bbc3ce892",
"SandboxKey": "/var/run/docker/netns/e4304b6b0026",
"Ports": {
"80/tcp": null
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "ddd341d949cea45d4d3e2e9575e0198fc271c076c571435d24bdf5c377d75669",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null,
"NetworkID": "38e2f0ccbf40c565828594d6053c89e9a7861a268468d27718b03e4f6377fce7",
"EndpointID": "ddd341d949cea45d4d3e2e9575e0198fc271c076c571435d24bdf5c377d75669",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": null
}
}
}
}
]
toby@tobykakao:~$ docker inspect --format="{{ .HostConfig.Tmpfs }}" tmpfs-test2
map[/var/www/html:]
'βοΈ Cloud Native > π³ Docker' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Docker] μ΄λ―Έμ§ κ΄λ¦¬νκΈ°: Docker μ΄λ―Έμ§ ν¨μ¨μ μΌλ‘ λ€λ£¨κΈ° (0) | 2025.01.10 |
---|---|
[Docker] Containerμ μ΄λ―Έμ§ (0) | 2025.01.10 |
[Docker] Dockerλ₯Ό νμ©ν Ngnix Container μ€μ , κ΄λ¦¬ & Docker hub λ°°ν¬ (0) | 2024.11.09 |
[Docker] Docker Container λͺ λ Ήμ΄ (with Ngnix Container μ€ν) (0) | 2024.11.05 |
[Docker] Docker λͺ λ Ήμ΄ νμ© Part.2 (0) | 2024.10.31 |