Docker學習——創建容器指定宿主機綁定目錄

 

默認情況下容器運行期間的數據都是存在容器內的,一旦容器被刪除則數據就會丟失,所以docker允許在創建容器時爲容器綁定一個宿主機的目錄,容器可以與主機共享這個目錄,默認是讀寫權限,也可以設置容器只讀的權限。

創建容器時使用命令(-v 宿主機目錄:容器目錄)綁定共享目錄

創建一個tomcat容器指定一個關聯數據卷目錄(如果不存在會自動創建該目錄)

-v 表示關聯宿主機與容器的目錄,/tomcatContainerData 表示宿主機的目錄,:後面的/tomcatContainerData表示容器的目錄

[root@hos fkk]# docker run -d -v /tomcatContainerData:/tomcatContainerData tomcat8.5:1.0.0 

如果要設置爲容器只可以讀目錄下的文件不可以寫,則要在容器目錄後加 :ro

[root@hos fkk]# docker run -d -v /tomcatContainerData:/tomcatContainerData:ro tomcat8.5:1.0.0 

 

在容器的/tomcatContainerData目錄下創建一個container.txt文件 

[root@host-192-168-48-4 /]# docker exec -it gracious_proskuriakova bash

root@c098645480fc:/# cd /tomcatContainerData
root@c098645480fc:/tomcatContainerData# ls

root@c098645480fc:/tomcatContainerData# touch container.txt

root@c098645480fc:/tomcatContainerData# ls
container.txt

查看宿主機這個目錄 也已經有這個文件了

[root@host-192-168-48-4 ~]# cd /tomcatContainerData
[root@host-192-168-48-4 tomcatContainerData]# ls
container.txt

在宿主機上編輯這個文件內容 添加 ‘添加一條記錄’  這句話

[root@host-192-168-48-4 tomcatContainerData]# vi container.txt 
[root@host-192-168-48-4 tomcatContainerData]# cat container.txt 
添加一條記錄

在容器內查看文件 也能看到編輯的內容

root@c098645480fc:/tomcatContainerData# cat container.txt 
添加一條記錄

通過 docker inspect 命令查看容器的詳細信息

可以看到HostConfig的binds節點下就是我們剛剛設置的數據關聯目錄

[root@host-192-168-48-4 /]# docker inspect gracious_proskuriakova
[
    {
        "Id": "c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6",
        "Created": "2020-06-26T05:55:12.307647127Z",
        "Path": "catalina.sh",
        "Args": [
            "run"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 248438,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-06-26T05:55:14.484177776Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:28f11c3b3beb4c6cf52141a6d7667820148b9f8f2ea8869aacf77b0a6ea506c5",
        "ResolvConfPath": "/var/lib/docker/containers/c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6/hostname",
        "HostsPath": "/var/lib/docker/containers/c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6/hosts",
        "LogPath": "/var/lib/docker/containers/c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6/c098645480fc2346547211738e934b2adbc7a1321d3b6a9845b7cd70cf3fe5b6-json.log",
        "Name": "/gracious_proskuriakova",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/tomcatContainerData:/tomcatContainerData"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Capabilities": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "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"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/9a5f15f7225e3f6460890d1d9e9ca3e82a5b69453c8809cb954b4b855e6250ac-init/diff:/var/lib/docker/overlay2/218a5e16e949a0631ee32693d7d8269b737258502867f18ceb1ed25b35ad5fc0/diff:/var/lib/docker/overlay2/80a3a9a505435107b8aae00b6b4cd2aca7f6da110a90f6b24f453abf47aac83d/diff:/var/lib/docker/overlay2/0f554fe1b56e89907d924a562878c980fe04534692a67ecd21837c9c69de2197/diff:/var/lib/docker/overlay2/4296c4edc62c546b6a552c0846b7d4dac85a7f80170ac2895d81fa9bf16eae65/diff:/var/lib/docker/overlay2/d4ed0bd00393304b90d7f70b8bf88c3641f8badafbf728504b41027ba2606a55/diff:/var/lib/docker/overlay2/2353625361f800d0935f17da6d40997421c84efa304c15e8fd4ce8ac53ab5eb6/diff:/var/lib/docker/overlay2/75e4d98a717e8959f134ef47f71733f1c6a4e33be57061f3c20bb342dfab1560/diff:/var/lib/docker/overlay2/619cef609368af55a9ac812486b81095140e356a0640d8e0125ab3bce9ce984d/diff:/var/lib/docker/overlay2/2f77bbd66222cbd1e2d0d0d47cc01f4bb4b2beb053db7dc201a919ed813a0b76/diff:/var/lib/docker/overlay2/bab24c2352416fe7d12e15682cd10473efb4a044bf01d1d5936687aa92683ebb/diff",
                "MergedDir": "/var/lib/docker/overlay2/9a5f15f7225e3f6460890d1d9e9ca3e82a5b69453c8809cb954b4b855e6250ac/merged",
                "UpperDir": "/var/lib/docker/overlay2/9a5f15f7225e3f6460890d1d9e9ca3e82a5b69453c8809cb954b4b855e6250ac/diff",
                "WorkDir": "/var/lib/docker/overlay2/9a5f15f7225e3f6460890d1d9e9ca3e82a5b69453c8809cb954b4b855e6250ac/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/tomcatContainerData",
                "Destination": "/tomcatContainerData",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "c098645480fc",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=en_US.UTF-8",
                "LANGUAGE=en_US:en",
                "LC_ALL=en_US.UTF-8",
                "JAVA_VERSION=jdk8u252-b09_openj9-0.20.0",
                "JAVA_HOME=/opt/java/openjdk",
                "JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle",
                "CATALINA_HOME=/usr/local/tomcat",
                "TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
                "LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
                "GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23",
                "TOMCAT_MAJOR=8",
                "TOMCAT_VERSION=8.5.56",
                "TOMCAT_SHA512=7a02a8e0b12eea2e0bf1175d754bd19dc445e7182c2db033ba6ca1330161cc74207c9b9b7f0fce510417ece28f26cc36816b34eb394b0d27350631e64204aed3"
            ],
            "Cmd": [
                "catalina.sh",
                "run"
            ],
            "Image": "tomcat8.5:1.0.0",
            "Volumes": null,
            "WorkingDir": "/usr/local/tomcat",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "6d0bf4fe24b8010f3a74854b5c9ea60c3b4a217b5552431ec8430dd8300ff54f",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8080/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/6d0bf4fe24b8",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "4723ad21d64af753f766afbb249d9d2870b1767f0b04268e1a767f250ebd6b26",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "fc805b53c6625929c0f97a283814b8c26a7542c3e411450901b45e3e7c3be637",
                    "EndpointID": "4723ad21d64af753f766afbb249d9d2870b1767f0b04268e1a767f250ebd6b26",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章