A A
[Docker] Docker Volume ν™œμš©

λ„μ»€λŠ” μœ λ‹ˆμ–Έ 파일 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λŠ” ν•˜λ‚˜μ˜ μ΄λ―Έμ§€λ‘œλΆ€ν„° μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€ 수 μžˆλŠ” 방법을 μ œκ³΅ν•˜κ³ , 이미지에 λ³€κ²½λœ λ‚΄μš©μ„ μ €μž₯ν•  수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή ν”„λ‘œκ·Έλž¨ λ“± μ—…λ¬΄μ—μ„œ μ‚¬μš©ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ°œμƒν•˜λŠ” 데이터에 μ ‘κ·Όν•˜κ³  이것을 κ³΅μœ ν•˜κΈ° μœ„ν•΄μ„œ 도컀 λ³Όλ₯¨ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ˜ν•œ, μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€μ˜ 데이터와 λ‘œμ§μ€ λ°˜λ“œμ‹œ λΆ„λ¦¬λ˜μ–΄μ•Ό ν•œλ‹€λŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ°œμƒν•˜λŠ” μ—¬λŸ¬ 가지 상황이 데이터에 영ν–₯을 주지 μ•Šκ³  μ–Έμ œλ“  λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆλ‘œ 이전할 수 μžˆλ‹€λ©΄ μš΄μ˜μžλŠ” 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ κ΄€λ¦¬ν•˜κ³  μš΄μ˜ν•  수 μžˆλ‹€λŠ” 점이 μžˆμŠ΅λ‹ˆλ‹€.

 

도컀 λ³Όλ₯¨μ€ μ»¨ν…Œμ΄λ„ˆμ—μ„œ 생성, μž¬μ‚¬μš©ν•  수 있고 호슀트 μš΄μ˜μ²΄μ œμ—μ„œ 직접 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ˜ν•œ λ³΄μ‘΄λ˜μ–΄μ•Ό ν•˜λŠ” 데이터λ₯Ό μœ μ§€(데이터 μ˜μ†μ„±κ³Ό 지속성)ν•˜κΈ° μœ„ν•œ λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 일반적으둜 μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ λ°μ΄ν„°λŠ” μ»¨ν…Œμ΄λ„ˆμ˜ 라이프사이클과 μ—°κ΄€λ˜μ–΄ μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œ μ‹œ μ‚­μ œλ©λ‹ˆλ‹€. 이λ₯Ό μ˜μ†μ μœΌλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ 도컀 λ³Όλ₯¨μ„ μ‚¬μš©ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆκ°€ μ‚­μ œλ˜μ–΄λ„ λ³Όλ₯¨μ€ λ…λ¦½μ μœΌλ‘œ 운영되기 λ•Œλ¬Έμ— ν•¨κ»˜ μ‚­μ œλ˜μ§€ μ•ŠλŠ” νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.


Docker Volume Type

호슀트 파일 μ‹œμŠ€ν…œμ˜ νŠΉμ • 디렉터리와 μ»¨ν…Œμ΄λ„ˆμ˜ 디렉터리λ₯Ό μ—°κ²°ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같은 방법이 μ œκ³΅λ©λ‹ˆλ‹€.

Docker Volume Reference

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:]