docker

阿里云下的docker ,以及运行一个rabbitmq的 docker程序

1
2
# 使用的是阿里云的安装方式 https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.5e3b19914aBPO5
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装好后我们选择自己的一个

  • Images
  • 我们在上图中首先设置好我们固定密码,这个密码对应一个当前登录的密码。 (docker login - username= **
  • 然后我们可以使用一个加速后的镜像源。
  • test
  • 假如我们使用子用户的时候,我们需要用子用户登录后再重新设置一次,
  • 子用户的登录入口时不一样的。 https://signin.aliyun.com

仓库建立。以及建立自己的私有仓库,docker pull push

  • 命名空间,仓库名,代码源
  • code
  • code
  • code
  • code
其他修改问题不是问题。。。主要是子账户登录的时候需要修改。

docker 打包镜像 以及上传问题

  • 本地打包镜像并上传到阿里云的私有仓库里
1
2
3
4
5
6
 sudo docker login --username=docker@1808011574081122 registry.cn-shanghai.aliyuncs.com
# 后缀仓库名对应你账号登录后阿里云分配的仓库位置
docker tag ros:vins-fusion registry.cn-shanghai.aliyuncs.com/upchsop/ros:vins_fusion_v1
# tag 一定要写全仓库路径,不然它会默认使用dockerhub的仓库
docker push registry.cn-shanghai.aliyuncs.com/upchsop/ros:vins_fusion_v1
# 提交镜像
  • 上传代码使用云端构建项目

  • create

  • 构建规则可以由我们自己定义
  • 优势,本地访问外部网络速度太慢,阿里云的速度还阔以
  • fail
  • 某些网络下载不下来的还是没有办法。哭唧唧

  • 刚发现原来阿里云还有一个海外构建的按钮。某些不能下载的东西可以通过这个构建
    board
  • 此外我们登进入的时候有时候我们看不到我们的仓库,因为我们没有修改我们的仓库位置
    location

    docker相关

    1
    2
    3
    4
    5
    docker run -it ros:vins-fusion /bin/bash --name ros_vins # 使用ros:vins-fusion 这个镜像,创建一个名字为ros_vins的容器,并运行一个bash
    exit #退出镜像
    docker images_contanier_name restart
    # 运行起来后是在后台,
    docker exec -it contanierIDorcontaniername /bin/bash #可以使用多运行一个实例

运行一个docker 的rabbit_mq 服务程序

  • 运行命令

    1
    2
    docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname rabbit_host -e RABBITMQ_DEFAULT_VHOST=my_vhost  
    -e RABBITMQ_DEFAULT_USER=shop -e RABBITMQ_DEFAULT_PASS=shop rabbitmq:3.7.7-management
  • 运行命令解析

    • -v pwd/data:/var/lib/rabbitmq
      // -v 挂载本地volume到容器内部 ,将数据保存到本地。
    • -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=shop -e RABBITMQ_DEFAULT_PASS=shop
      我创建的用户能够访问的用户空间 my_host 以及用户名, 用户密码
    • rabbitmq:3.7.7-management 为了我们能够看到我们相关的信息流,我们使用带管理页面的镜像
    • 跑起来后我们访问 localhost:15672 即可查看相关的信息 。
    • 镜像我们可以去dockerhub 查看 rabbit 带management的 镜像版本 可以不用本地先pull

    • rabbit

  • 如何查看能否连上rabbit_mq

    • 一个小demo spring-boot
    • appliction.yml

      1
      2
      3
      4
      5
      6
      7
      spring:
      rabbitmq:
      host: localhost
      username: shop
      password: shop
      port: 5672
      virtual-host: my_vhost # shop 用户的工作空间,对应我们上面的设置,当前用用户只允许你在这个目录下运行,我是这么理解的,只要能用就行
    • 项目入口以及队列的设置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      import org.springframework.amqp.core.Queue;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.context.annotation.Bean;

      @SpringBootApplication
      public class DemoApplication {

      public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
      }

      @Bean
      public Queue Queue() {
      return new Queue("hello"); // 设置一个队列
      }
      }
    • 设置一个发送者

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23

      import org.springframework.amqp.core.AmqpTemplate;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Component;

      import java.util.Date;

      /**
      * @author liliangbin dumpling1520@gmail.com
      * @date 2019/6/20 13:10
      **/
      @Component
      public class HelloSender {
      @Autowired
      private AmqpTemplate rabbitTemplate;
      public void send() {
      String context = "hello " + new Date(); // 我们的发送内容可以是一个类 但是最好能够继承实现seriarl 的那个类,具体是啥我忘了,大概是这个写的。序列化的那个类 还是接口
      System.out.println("Sender : " + context);

      this.rabbitTemplate.convertAndSend("hello", context); //发送
      }

      }
    • 接收者 ,可以是不同的主机,我们把他卸载一个包里面

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      package com.example.demo;

      import org.springframework.amqp.rabbit.annotation.RabbitHandler;
      import org.springframework.amqp.rabbit.annotation.RabbitListener;
      import org.springframework.stereotype.Component;

      /**
      * @author liliangbin dumpling1520@gmail.com
      * @date 2019/6/20 13:11
      **/
      @Component
      @RabbitListener(queues = "hello") //监听某一个接口
      public class HelloReceiver {

      @RabbitHandler


      public void process(String hello) {
      System.out.println("Receiver  : " + hello);
      }

      }