默認情況下容器運行期間的數據都是存在容器內的,一旦容器被刪除則數據就會丟失,所以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
}
}
}
}
]