当前位置: 首页 > news >正文

容器使用绑定挂载

1.绑定挂载主机上的目录

        1.准备源代码目录并切换到 source 目录

[root@host1 ~]# mkdir -p source/target && cd source

        2.启动容器并将主机上的 source/target 目录挂载到容器的 /app 目录中

[root@host1 source]# docker run -dit --name devtest --mount type=bind,source="$(pwd)"/target,target=/app nginx
1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4

        3.查看该容器的详细信息

[root@host1 source]# docker inspect devtest
[{"Id": "1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4","Created": "2025-09-12T06:44:16.776281072Z","Path": "/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 589503,"ExitCode": 0,"Error": "","StartedAt": "2025-09-12T06:44:16.793372395Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:41f689c209100e6cadf3ce7fdd02035e90dbd1d586716bf8fc6ea55c365b2d81","ResolvConfPath": "/var/lib/docker/containers/1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4/resolv.conf","HostnamePath": "/var/lib/docker/containers/1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4/hostname","HostsPath": "/var/lib/docker/containers/1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4/hosts","LogPath": "/var/lib/docker/containers/1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4/1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4-json.log","Name": "/devtest","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","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": [36,101],"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,"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,"Mounts": [{"Type": "bind","Source": "/root/source/target","Target": "/app"}],"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/interrupts","/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": {"ID": "1599e5dd1b6e6f86c7f32f7648552e9b4193ac8a5a1fa17f076d10c4cb410dd4","LowerDir": "/var/lib/docker/overlay2/c23358462a341ce93b911a7dcf92d8f12bca833e95a1de7357ede5911534f4ac-init/diff:/var/lib/docker/overlay2/8b57d2f007b17a853b402d7981962ae0217011bd75f8f4aa6ec1288aebb0dc7e/diff:/var/lib/docker/overlay2/7c5719df2bf53f07bea95c0dab086a15fc9c3b85bea2225098d49d78a8a766e8/diff:/var/lib/docker/overlay2/5a31009658ea6524de00dca63c21fc65f89a0e88be6264074c0ea65be9bfd24c/diff:/var/lib/docker/overlay2/6655e09d62aa340b5368fe6a07108907f813224356ee4cfa7a8cfa802ec87e66/diff:/var/lib/docker/overlay2/23c934857988d94756762e22771276121b35cab43c4549582e8d7d54d2c7ecf1/diff:/var/lib/docker/overlay2/7959c6d39ca832474bf8aba5077a8d407f7f4d087a8c8480d8c282e0deae1ad1/diff:/var/lib/docker/overlay2/ca8efaabeb43dce901c82c3111b6f5d376ee91641aa5c3268760982d8552d4d1/diff","MergedDir": "/var/lib/docker/overlay2/c23358462a341ce93b911a7dcf92d8f12bca833e95a1de7357ede5911534f4ac/merged","UpperDir": "/var/lib/docker/overlay2/c23358462a341ce93b911a7dcf92d8f12bca833e95a1de7357ede5911534f4ac/diff","WorkDir": "/var/lib/docker/overlay2/c23358462a341ce93b911a7dcf92d8f12bca833e95a1de7357ede5911534f4ac/work"},"Name": "overlay2"},"Mounts": [{"Type": "bind","Source": "/root/source/target","Destination": "/app","Mode": "","RW": true,"Propagation": "rprivate"}],"Config": {"Hostname": "1599e5dd1b6e","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": true,"OpenStdin": true,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.29.1","NJS_VERSION=0.9.1","NJS_RELEASE=1~bookworm","PKG_RELEASE=1~bookworm","DYNPKG_RELEASE=1~bookworm"],"Cmd": ["nginx","-g","daemon off;"],"Image": "nginx","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"NetworkSettings": {"Bridge": "","SandboxID": "957dbab5cdda73dce6a02534f9cec48834fe69db27c01ac1e4e68418ce61fdd9","SandboxKey": "/var/run/docker/netns/957dbab5cdda","Ports": {"80/tcp": null},"HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "75ec2950f056ab28a7dac657e8eb7ff16524d8f9802d15e8829264bfe371db2b","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "ba:db:0e:4e:4c:f6","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "ba:db:0e:4e:4c:f6","DriverOpts": null,"GwPriority": 0,"NetworkID": "2dba964368f785973cac101f2112a37a034ddf1667583203846b25e06839cac9","EndpointID": "75ec2950f056ab28a7dac657e8eb7ff16524d8f9802d15e8829264bfe371db2b","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DNSNames": null}}}}
]

        4.停止并删除实验所用的容器

[root@host1 source]# docker stop devtest && docker rm devtest
devtest
devtest

        5.实现只读绑定挂载

[root@host1 source]# docker run -d -it --name devtest --mount type=bind,source="$(pwd)"/target,target=/app,readonly nginx
bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e

        6.查看容器详细信息

[root@host1 source]# docker inspect devtest
[{"Id": "bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e","Created": "2025-09-12T06:47:39.701174343Z","Path": "/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 618477,"ExitCode": 0,"Error": "","StartedAt": "2025-09-12T06:47:39.712819264Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:41f689c209100e6cadf3ce7fdd02035e90dbd1d586716bf8fc6ea55c365b2d81","ResolvConfPath": "/var/lib/docker/containers/bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e/resolv.conf","HostnamePath": "/var/lib/docker/containers/bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e/hostname","HostsPath": "/var/lib/docker/containers/bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e/hosts","LogPath": "/var/lib/docker/containers/bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e/bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e-json.log","Name": "/devtest","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","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": [36,101],"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,"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,"Mounts": [{"Type": "bind","Source": "/root/source/target","Target": "/app","ReadOnly": true}],"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/interrupts","/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": {"ID": "bd45f0ce1c065d378a00542cc50581ea0990817c35e2f4041a8b67d39b22b04e","LowerDir": "/var/lib/docker/overlay2/964c799cdee120079cc6306646839a22ea7071e9defc18e707d860b1538e2ed1-init/diff:/var/lib/docker/overlay2/8b57d2f007b17a853b402d7981962ae0217011bd75f8f4aa6ec1288aebb0dc7e/diff:/var/lib/docker/overlay2/7c5719df2bf53f07bea95c0dab086a15fc9c3b85bea2225098d49d78a8a766e8/diff:/var/lib/docker/overlay2/5a31009658ea6524de00dca63c21fc65f89a0e88be6264074c0ea65be9bfd24c/diff:/var/lib/docker/overlay2/6655e09d62aa340b5368fe6a07108907f813224356ee4cfa7a8cfa802ec87e66/diff:/var/lib/docker/overlay2/23c934857988d94756762e22771276121b35cab43c4549582e8d7d54d2c7ecf1/diff:/var/lib/docker/overlay2/7959c6d39ca832474bf8aba5077a8d407f7f4d087a8c8480d8c282e0deae1ad1/diff:/var/lib/docker/overlay2/ca8efaabeb43dce901c82c3111b6f5d376ee91641aa5c3268760982d8552d4d1/diff","MergedDir": "/var/lib/docker/overlay2/964c799cdee120079cc6306646839a22ea7071e9defc18e707d860b1538e2ed1/merged","UpperDir": "/var/lib/docker/overlay2/964c799cdee120079cc6306646839a22ea7071e9defc18e707d860b1538e2ed1/diff","WorkDir": "/var/lib/docker/overlay2/964c799cdee120079cc6306646839a22ea7071e9defc18e707d860b1538e2ed1/work"},"Name": "overlay2"},"Mounts": [{"Type": "bind","Source": "/root/source/target","Destination": "/app","Mode": "","RW": false,"Propagation": "rprivate"}],"Config": {"Hostname": "bd45f0ce1c06","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": true,"OpenStdin": true,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.29.1","NJS_VERSION=0.9.1","NJS_RELEASE=1~bookworm","PKG_RELEASE=1~bookworm","DYNPKG_RELEASE=1~bookworm"],"Cmd": ["nginx","-g","daemon off;"],"Image": "nginx","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"NetworkSettings": {"Bridge": "","SandboxID": "cac1d4a94376b13569a6f4a30fcc97f5b55e042384fb4f888dacc1309965f3fd","SandboxKey": "/var/run/docker/netns/cac1d4a94376","Ports": {"80/tcp": null},"HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "212e9de008980f22ed7ffe5913edc3389372b069a484eb2926c9ce18ed8639f0","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "46:15:b4:8a:6f:d9","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "46:15:b4:8a:6f:d9","DriverOpts": null,"GwPriority": 0,"NetworkID": "2dba964368f785973cac101f2112a37a034ddf1667583203846b25e06839cac9","EndpointID": "212e9de008980f22ed7ffe5913edc3389372b069a484eb2926c9ce18ed8639f0","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DNSNames": null}}}}
]

        7.停止并删除实验所用的容器

[root@host1 source]# docker stop devtest && docker rm devtest
devtest
devtest

2.绑定挂载主机上的文件

[root@host1 ~]# docker run --rm -it -v/etc/localtime:/etc/localtime ubuntu /bin/bash
root@cf8eceac7f76:/# date -R
Fri, 12 Sep 2025 14:56:13 +0800
root@cf8eceac7f76:/# exit
exit

3.绑定挂载主机上不存在的目录或文件

[root@host1 ~]# docker run --rm -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash
root@93e7e5614d4d:/foo# exit
exit
[root@host1 ~]# ls -l /doesnt
总用量 0
drwxr-xr-x. 2 root root 6  9月 12 15:00 exist

4.绑定挂载到容器中的非空目录

[root@host1 ~]# docker run -d -it --name broken-container --mount type=bind,source=/tmp,target=/usr nginx
649c895a6159a2d6d002f328faa311a480c10e7d613bbd5a0041e162e13f4392
[root@host1 ~]# docker container rm broken-container
broken-container


文章转载自:

http://K1MBxtAp.smrkf.cn
http://5ImzBn4B.smrkf.cn
http://PXRZt92C.smrkf.cn
http://zPUB2Ysg.smrkf.cn
http://aePAhxk6.smrkf.cn
http://jtQdz8Q0.smrkf.cn
http://6251cGbB.smrkf.cn
http://gUhRoc6b.smrkf.cn
http://hJNFnwBc.smrkf.cn
http://MEBzOuNd.smrkf.cn
http://mPvMVcuu.smrkf.cn
http://4PjPA7Qw.smrkf.cn
http://iLy8MRuu.smrkf.cn
http://QWKfFamp.smrkf.cn
http://WX1bqOEn.smrkf.cn
http://3t3wxMgI.smrkf.cn
http://pKxY5YtB.smrkf.cn
http://6GsjqziK.smrkf.cn
http://XLEQTnNf.smrkf.cn
http://6JR4Z2Dz.smrkf.cn
http://5n2Ty6hT.smrkf.cn
http://GMkEir6f.smrkf.cn
http://EBUiXT19.smrkf.cn
http://o6GTms4O.smrkf.cn
http://OwtU7ZNw.smrkf.cn
http://vVCJ4pKV.smrkf.cn
http://uK8gfKWO.smrkf.cn
http://JRy6yE7i.smrkf.cn
http://3tzevpXl.smrkf.cn
http://h601eu5q.smrkf.cn
http://www.dtcms.com/a/381032.html

相关文章:

  • 智能排班系统哪个好?从L1到L4,AI排班软件选型指南
  • CentOS7.9 离线升级内核
  • 杨辉三角**
  • Android「Global / Secure / System」三大命名空间全局设置项总结
  • 【嵌入式】【科普】运动控制岗位相关职责
  • 期货盘后空开是认购期权行权?
  • 【一天一个Web3概念】Web3.0赛道分析:新一轮技术浪潮下的机遇与挑战
  • HMI界面设计:9个工业触摸屏原型案例合集与核心要点解析
  • 【一天一个Web3概念】从 Web1.0 到 Web3.0:互联网的三次演进与未来趋势
  • EMG肌电信号可视化系统【附源码】
  • 解读HRV与认知负荷
  • 打工人日报#20250912
  • 有度新版本:待办全新升级、企业互联、自带数据库...协作体验更佳!
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(29):文法運用第9回3+(考え方11)
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(八):Vuex 内部机制
  • 【LeetCode】33. 搜索旋转排序数组
  • 【代码随想录day 25】 力扣 46. 全排列
  • Java JUC并发集合详解:线程安全容器完全指南
  • 流畅的Python(二) 丰富的序列
  • DPO vs PPO,偏好优化的两条技术路径
  • clickhouse的UInt64类型(countIf() 函数返回)
  • 算法之线性基
  • GlobalBuildingAtlas 建筑物白模数据下载
  • 用pywin32连接autocad 写一个利用遗传算法从选择的闭合图形内进行最优利用率的排版 ai草稿
  • 性能测试工具JvisualVM/jconsole使用
  • 面试题:Redis要点总结(性能和使用)
  • 无卡发薪系统:灵活用工全链条协同的核心枢纽( “数据互通、流程联动” 为核心,将人力招聘、劳务结算、电子合同签约、保险投保深度整合,构建灵活用工管理闭环。)
  • 万物皆可PID:深入理解控制算法在OpenBMC风扇调速中的应用
  • Centos修改主机明后oracle的修改
  • 使用 nanoVLM 训练一个 VLM