用java操作docker中的minio

本文介绍了如何在工作中使用Java操作Docker中的MinIO实现数据安全性,确保每个客户的数据存储在独立的环境中。在用户注册时,通过Java程序创建用户专享的Docker容器并部署MinIO,为每个用户生成特定的bucket,并监听bucket操作,以实现数据隔离。
摘要由CSDN通过智能技术生成

一、背景

       最近工作中接触数据安全相关的内容,顺便接触一下现在最新的私有云相关的一些技术,下面是工作中的一个场景。为了保证数据的安全性,需要确保每个客户的数据我们保存在各自的一个存储中,用户之间数据是不可见的。这样有几种解决方法:

       使用分布式文件存储,通过文件系统的权限管控来实现在应用层做一层权限管控使每个用户的数据使用各自的存储引擎。
  我们的设计方案就是基于第三种方案实现的。

二、设计

       用户在注册的时候,帮用户生成创建自己的docker容器,并安装好MinIO(MinIO是一个对象存储服务器,具体可以官网https://min.io/)。根据业务在MinIO中创建对象的bucket,并设置对bucket操作的监听,从而进行下一步操作。

三、实现

       所用功能都是用Java实现。

       用户注册成功时,会往消息队列发送消息;后台服务监听消息队列,接收到创建的指令,就创建MinIO的docker,并创建bucket,设置监听

//配置监听的哪一个队列,同时在没有queue和exchange的情况下会去创建并建立绑定关系
  @RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "test-container", durable = "true"),
        exchange = @Exchange(value = ExchangeConstants.CONTAINER_EXCHANGE, durable = "true", type = "topic"),
        key = "container.*"
    )
  )

  // 创建docker,安装minio
  @RabbitHandler
  public void minIoContainer(@Payload String s, @Headers Map<String, Object> headers, Channel channel) throws IOException {
   
      log.info("headers:{}", headers);
      String routingKey = (String) headers.get(AmqpHeaders.RECEIVED_ROUTING_KEY);
      log.info("routingKey:{}", routingKey);

      /*
       * Delivery Tag 用来标识信道中投递的消息。RabbitMQ 推送消息给 Consumer 时,会附带一个 Delivery Tag,
       * 以便 Consumer 可以在消息确认时告诉 RabbitMQ 到底是哪条消息被确认了。
       * RabbitMQ 保证在每个信道中,每条消息的 Delivery Tag 从 1 开始递增。
       */
      Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
    // 创建docker client
    DockerClient client = DockerClientBuilder.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值