docker 添加挂载目录 mount /mnt /Volume

本文介绍了如何在Docker开发环境中,通过docker-compose将本地/Volumes挂载到容器的/mnt,并展示了如何使用PHP函数扫描目录。重点在于实践操作和文件系统管理在Docker中的应用。

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

workspace: docker开发环境

~/gitee.com/mxycool/workspace/docker-compose.yml

添加 - '/Volumes:/mnt'

$ docker-compose down

$ docker-compose up -d

把本机/Volumes 挂载到 容器的 /mnt

 点击进入docker容器命令行查看

[root@workspace: /mnt/老毛桃U盘] #

扫描目录

    public static function scanDir(string $dir, callable $handler) {
        if (false == is_dir($dir)) {
            throw new InvalidArgumentException(sprintf("No such directory: \"%s\"", $dir), 2);
        }
        if ($dh = opendir($dir)) {
            /** @var $dh resource */
            while (false !== ($file = readdir($dh))) {
                /** @var $file string */
                if (strncmp($file, ".", 2) !== 0
                    && strncmp($file, "..", 2) !== 0) {
                    call_user_func($handler, $file);
                }
            }
            closedir($dh);
        }
    }
$dir = "/mnt/老毛桃U盘/汽车图片/images";
self::scanDir($dir, function($filename) {
    printf("%s\n", $filename);
});

### Docker Kafka 数据卷挂载配置 在使用 Docker 安装和运行 Kafka 的过程中,为了实现持久化存储或者方便调试与管理,通常会通过数据卷(volume)的方式将容器内的 Kafka 配置文件或日志目录映射到宿主机上。以下是关于如何在 Docker挂载 Kafka 相关的数据卷的具体方法。 #### 使用 `-v` 参数挂载数据卷 Docker 提供了 `-v` 或 `--mount` 参数用于挂载数据卷。对于 Kafka 来说,主要涉及以下几个路径的挂载: 1. **Kafka 日志目录** 默认情况下,Kafka 的消息日志存储在 `/var/lib/kafka/data` 路径下。可以通过以下命令将其挂载到宿主机上的指定目录: ```bash docker run --name kafka-container \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ -p 9092:9092 \ -v /host/path/to/kafka-data:/var/lib/kafka/data \ -d confluentinc/cp-kafka:latest ``` 上述命令中的 `-v /host/path/to/kafka-data:/var/lib/kafka/data` 表示将宿主机的 `/host/path/to/kafka-data` 目录挂载至容器内部的 `/var/lib/kafka/data` 路径[^1]。 2. **ZooKeeper 数据目录** 如果同时启动 Zookeeper,则可以为其也设置数据卷挂载,以确保元数据不会因容器重启而丢失: ```bash docker run --name zookeeper-container \ -e ZOO_MY_ID=1 \ -e ZOO_SERVERS=server.1=zookeeper:2888:3888 \ -p 2181:2181 \ -v /host/path/to/zk-data:/data \ -v /host/path/to/zk-datalog:/datalog \ -d zookeeper:latest ``` 这里分别将 Zookeeper 的数据目录 (`/data`) 和事务日志目录 (`/datalog`) 映射到了宿主机对应的路径[^2]。 3. **自定义 Kafka 配置文件** 若要修改默认的 Kafka 配置参数,也可以将外部的配置文件挂载进入容器。例如: ```bash docker run --name kafka-container \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \ -p 9092:9092 \ -v /host/path/to/custom-config/server.properties:/etc/kafka/server.properties \ -d confluentinc/cp-kafka:latest ``` 此处将宿主机上的 `/host/path/to/custom-config/server.properties` 文件作为 Kafka 的核心配置文件加载[^3]。 #### 注意事项 - 当前挂载操作需要确保宿主机目标路径存在并具有适当权限。 - 对于生产环境部署建议采用更复杂的网络拓扑结构以及高可用方案来保障服务稳定性。 ```python # 示例 Python 代码片段展示如何动态生成上述命令字符串 def generate_docker_command(host_data_path, host_config_path=None): base_cmd = "docker run --name kafka-container " env_vars = "-e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 " port_map = "-p 9092:9092 " volume_maps = f"-v {host_data_path}:/var/lib/kafka/data" if host_config_path: volume_maps += f" -v {host_config_path}:/etc/kafka/server.properties" image_name = "confluentinc/cp-kafka:latest" full_cmd = f"{base_cmd}{env_vars}{port_map}{volume_maps} -d {image_name}" return full_cmd print(generate_docker_command("/mnt/kafka", "/mnt/config")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值