关于Docker目录挂载的总结

博客介绍了Docker容器启动时挂载宿主机目录的方法,可使用 -v 参数指定。如启动centos容器,将宿主机的 /test 目录挂载到容器的 /soft 目录,可通过 'docker run -it -v /test:/soft centos /bin/bash' 实现,还指出冒号前是宿主机目录,后是容器内目录。

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

已经转移到:https://blog.youkuaiyun.com/anyincc125/article/details/111192576

Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。

譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:

# docker run -it -v /test:/soft centos /bin/bash

总结:带冒号的都是在容器呢,k8s也是一样的

这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

参考:https://www.cnblogs.com/ivictor/p/4834864.html

### 解决方案 #### 关于 `.gcno` 和 `.gcda` 文件无法打开的问题 当使用 `lcov` 工具生成覆盖率数据时,如果遇到错误提示 “cannot open notes file (.gcno)” 或者 “cannot open data file (.gcda)”,通常是因为编译选项未正确设置或者目标文件路径匹配。 以下是可能导致该问题的原因及其解决方案: 1. **编译器选项缺失** 编译源码时需要启用 `-fprofile-arcs` 和 `-ftest-coverage` 两个选项来生成 `.gcno` 和 `.gcda` 文件。如果没有正确配置这些选项,则会生成所需的覆盖分析文件[^2]。 如果您正在使用 `CMake` 构建项目,请确保在构建脚本中设置了以下标志: ```cmake set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") ``` 2. **`.gcno` 文件丢失或路径对** `.gcno` 文件是在编译阶段生成的中间文件,用于存储程序执行流的信息。如果此文件存在或被删除,则会引发上述错误。可以通过重新编译整个项目并保留所有临时文件来解决问题[^3]。 3. **过滤条件过严** 使用 `lcov` 的时候可以指定一些过滤规则排除需要的部分代码区域。但如果过滤规则太严格可能会误删掉实际存在的有效记录条目。例如,在日志中有提到关于 `/xx/xx/xx/xx/xx/primitives.h` 这样的头文件找到的情况,这可能是由于路径映射关系错乱引起的。尝试通过命令参数调整行为: ```bash lcov --directory ./ --capture --output-file cov.info \ --ignore-errors source --rc geninfo_unexecuted_blocks=1 ``` 上述指令中的 `--ignore-errors source` 参数允许忽略某些因缺少对应源文件而导致的小型警告;而 `--rc geninfo_unexecuted_blocks=1` 则强制将那些标记为“unexecuted”的区块计数设回零值从而避免干扰最终统计结果[^1]。 4. **环境变量影响** 某些情况下,运行环境中存在特殊定义也可能间接改变默认处理逻辑。比如 GCOV_PREFIX 变量的存在会影响输出的实际位置。确认当前 session 下是否有类似设定,并酌情清除之再试一次操作即可恢复正常流程。 --- #### Docker 容器中挂载当前目录方法 为了能够在 Docker 容器内部访问主机上的某个具体工作区(即所谓的“当前目录”),需要用到 `-v|--volume` 参数实现双向绑定共享机制。基本语法如下所示: ```bash docker run -it -v $(pwd):<container_path> <image_name> ``` 其中 `<container_path>` 表示希望把宿主机当前位置映射到容器内的哪个子目录下;而 `<image_name>` 自然就是所选用的基础镜像名称啦! 举个例子来说吧,假设我们现在正位于 ~/projects/myapp 路径下面准备启动测试服务的话,那么完整的调用形式应该是这样的样子滴: ```bash docker run -it -v $PWD:/workspace mytestenv bash ``` 这样做的好处在于无论何时何地只要保持两者同步更新状态一致便能轻松完成调试任务咯~ --- ### 总结 综上所述,针对您的需求分别提供了两方面的指导建议:一方面是如何修正 LCOV 报告过程中碰到的各种异常状况;另一方面则介绍了如何利用 DOCKER 提供的功能特性快速搭建适合开发人员日常使用的隔离化实验平台架构模型设计思路分享给大家参考学习哦~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值