7、Docker容器数据卷volumes-from

本文通过实例演示了Docker容器如何使用`volumes-from`实现数据共享。创建dc01、dc02和dc03三个容器,每个容器在dataVolumeContainer2目录下新建文件,所有容器能查看到彼此新增的文件,即使删除dc01,其他容器的内容依然存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


小实验目的,通过volumes-from实现多个容器文件共享,有继承之意

1、运行dc01容器

docker run -it --name dc01 chengwen/centos

查看容器目录,并进入dataVolumeContainer2 新建文件 dc01_add.txt

[root@99ed34ced394 /]# ls -l
total 24
lrwxrwxrwx.   1 root root    7 May 11  2019 bin -> usr/bin
drwxr-xr-x.   2 root root    6 May 31 08:41 dataVolumeContainer1
drwxr-xr-x.   2 root root    6 May 31 08:41 dataVolumeContainer2
drwxr-xr-x.   5 root root  360 May 31 08:41 dev
drwxr-xr-x.   1 root root   62 May 31 08:41 etc
drwxr-xr-x.   2 root root    6 May 11  2019 home
lrwxrwxrwx.   1 root root    7 May 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 May 11  2019 lib64 -> usr/lib64
drwx------.   2 root root    6 Jan 13 21:48 lost+found
drwxr-xr-x.   2 root root    6 May 11  2019 media
drwxr-xr-x.   2 root root    6 May 11  2019 mnt
drwxr-xr-x.   2 root root    6 May 11  2019 opt
dr-xr-xr-x. 177 root root    0 May 31 08:41 proc
dr-xr-x---.   2 root root 4096 Jan 13 21:49 root
drwxr-xr-x.   1 root root 
### Docker `--volumes-from` 参数详解 #### 功能描述 `--volumes-from` 参数用于让新创建的容器挂载另一个已存在容器中的卷。这使得多个容器可以共享同一个数据存储位置,方便实现跨容器的数据同步和共享[^1]。 #### 基本语法 ```bash docker run -it --name new_container_name --volumes-from source_container_id image_name command ``` 其中: - `-it`: 交互模式启动容器- `new_container_name`: 新建容器的名字; - `source_container_id`: 已有容器ID或名称,作为源容器提供要挂载的卷; - `image_name`: 要使用的镜像名; - `command`: 启动后的执行指令。 #### 示例演示 假设有一个名为 `data-container` 的容器已经包含了某些重要文件夹 `/var/lib/mysql` ,现在希望另外两个新的容器也能够访问这个路径下的内容: ```bash # 创建第一个依赖于 data-container 卷的新容器 docker run -d --name db_backup_01 --volumes-from data-container mysql:latest mysqldump ... # 再次创建第二个同样依赖该卷的新容器 docker run -ti --rm --volumes-from data-container centos bash ``` 上述例子展示了如何通过指定 `--volumes-from data-container` 来使其他容器继承来自 `data-container` 中定义好的任何卷设置。 #### 只读权限控制 如果只想让目标容器以只读方式访问某个特定卷,则可以在命令后面加上 `:ro` 标志位: ```bash docker run --volumes-from existing_container:ro ... ``` 这样做的好处是可以防止意外修改原始数据的同时保持必要的资源共享能力[^2]。 #### 解决方案与注意事项 当遇到无法正常工作的情况时,可尝试以下方法排查并解决问题: - **确认源容器状态**:确保被引用的源容器处于运行状态;停止状态下仍能成功加载卷但可能影响性能。 - **检查命名冲突**:避免不同容器间出现相同名字引起混淆错误。 - **清理残留资源**:删除不再需要的老化容器以免干扰最新实例间的通信连接。 - **更新客户端版本**:对于较老版Docker CLI来说部分特性支持有限,建议升级到稳定发行版再试一次操作流程。 #### 替代工具推荐 考虑到复杂场景下手动管理多层嵌套关系容易出错,官方推出了更高级别的组合式应用编排框架——Docker Compose 。它允许用户在一个YAML配置文档里清晰地表达整个应用程序所需的所有组件和服务,并简化了一键部署过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值