• Linux下Docker安装几种NoSQL和MQ


    注:本文中所有配置文件都是我用echo或者cat输入的,不全,最好用docker cp
    如下面的diamagnetic就是将mysql-service容器内的配置文件复制到宿主机上
    然后在第二次运行的时候再挂载

    docker cp mysql-service:/etc/mysql/my.cnf /root/docker/mysql/conf
    
    • 1

    我的服务器是本地虚拟机,所以直接关了防火墙
    具体要开的端口是
    mongodb:27017
    redis:6379
    es + kibana:9200 9300 5601
    rabbitmq 5672 15672

    Docker

    1. 卸载(可选)如果之前安装过旧版本的Docker,可以使用下面命令卸载:
    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine \
    docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 安装docker。服务器机器要能联网,安装yum工具
    yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2 --skip-broken
    
    • 1
    • 2
    • 3
    1. 更新本地镜像源,这里设为了阿里云的镜像
    yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1
    • 2
    • 3
    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    • 1
    yum makecache fast
    
    • 1
    1. 安装docker社区版
    yum install -y docker-ce
    
    • 1
    1. 启动docker
    systemctl start docker 
    systemctl enable docker
    
    • 1
    • 2
    1. 查看docker版本,验证启动成功
    docker -v
    
    • 1
    1. 配置镜像加速。这里参考阿里云的镜像加速文档:加速文档,把文档里的代码直接全粘了运行docker官方镜像仓库网速较差,我们需要设置国内镜像服务。
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://ppztf0yr.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    docker常用命令

    docker常用命令

    MongoDB

    1. 我是拉取最新版的
    docker pull mongo
    
    • 1
    1. 预先创建好被挂载的配置文件
      mongodb.conf 配置文件详解
    mkdir -p /myData/mongo/conf
    mkdir -p /myData/mongo/data
    mkdir -p /myData/mongo/log
    cd /myData/mongo/conf
    cat > mongodb.conf <<EOF
    #端口
    port=27017
    #数据库文件存放目录
    dbpath=/myData/mongo/data
    #日志文件存放路径
    logpath=/myData/mongo/log
    #使用追加方式写日志
    logappend=true
    #以守护线程的方式运行,创建服务器进程
    fork=true
    #最大同时连接数
    maxConns=100
    #不启用验证
    #noauth=true
    #每次写入会记录一条操作日志
    journal=true
    #存储引擎有mmapv1、wiredTiger、mongorocks
    storageEngine=wiredTiger
    #访问IP
    bind_ip=0.0.0.0
    #用户验证
    auth=true
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    1. 新建一个名为mongo的容器运行该mongo镜像,映射宿主机的 27017 端口为容器服务的 27017 端口,并指定要验证才能使用服务
      在这里插入图片描述
    docker run \
    --name mongo \
    -p 27017:27017 \
    -v /myData/mongo/data:/data/db -v /myData/mongo/conf:/data/conf -v /myData/mongo/log:/data/log \
    -d mongo --auth
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 查看运行情况
    docker ps
    
    • 1
    1. 进入容器
    docker exec -it mongo mongo admin
    
    • 1

    接下来的角色权限配置可以参考MongoDB的角色创建及配置

    1. 创建用户
    db.createUser({user:"root",pwd:"root",roles:["root"]});
    
    • 1
    1. 尝试登录该用户,输出1表示成功(同redis的auth)
    db.auth('root','root')
    
    • 1
    1. 退出
    exit
    
    • 1

    Redis

    参考自docker拉取Redis

    1. 拉取
    docker pull redis
    docker run -p 6379:6379 -d redis
    
    • 1
    • 2
    1. 预先创建好挂载目录及文件
      注意daemonize不能为yes,因为docker run里的-d就是守护进程
      参考自docker日记(二)–redis
    mkdir -p /myData/redis/conf
    mkdir -p /myData/redis/data
    touch /myData/redis/conf/redis.conf
    cat > /myData/redis/conf/redis.conf <<EOF
    bind 0.0.0.0 
    protected-mode no
    appendonly yes 
    requirepass root
    daemonize no
    EOF
    chmod -R 777 /myData/redis/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 创建容器运行该镜像
      -v /myData/redis/data:/data \【-v:目录挂载,将容器内部的data 文件夹挂载到Linux的/myData/redis/data目录里】
      -V /myData/redis/conf/redis.conf:/etc/redis/redis.conf \【将/etc/redis/redis.conf挂载到Linux中指定目录下】
      -d --restart=always 【配置开机启动】
      TIMEZONE解决redis时区不同步问题
      注意最后一行是用容器内配置文件启动redis服务端
    docker run -p 6379:6379 --name redis \
    --sysctl net.core.somaxconn=1024 --privileged=true --restart=always \
    -v /myData/redis/data:/data \
    -v /myData/redis/conf/redis.conf:/etc/redis/redis.conf \
    -e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
    -d redis redis-server /etc/redis/redis.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 进入客户端
    docker exec -it redis redis-cli
    
    • 1
    1. 测试
      注意下面这个root是我们之前配的密码,如果你想免密,就把那行删掉或注释掉
    auth root
    ping
    exit
    
    • 1
    • 2
    • 3

    返回PONG即成功
    7. 继续修改配置
    参考自docker启动redis时reids服务自动关闭的问题
    如果不修改会产生warning,阻止redis的重启

    echo "net.core.somaxconn=1024" >> /etc/sysctl.conf
    sysctl -p
    echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
    sysctl vm.overcommit_memory=1
    echo "ignore-warnings ARM64-COW-BUG" >> /myData/redis/conf/redis.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 重启容器
    docker restart redis
    
    • 1

    Elasticsearch

    1. 拉取
    docker pull elasticsearch:7.6.2
    docker pull kibana:7.6.2
    
    • 1
    • 2
    1. 准备好外部挂在目录和文件
    mkdir -p /myData/elasticsearch/config 
    mkdir -p /myData/elasticsearch/plugins
    mkdir -p /myData/kibana/config
    mkdir -p /myData/kibana/data
    cat > /myData/elasticsearch/config/elasticsearch.yml <<EOF
    http.host: 0.0.0.0
    # Uncomment the following lines for a production cluster deployment
    #transport.host: 0.0.0.0
    #discovery.zen.minimum_master_nodes: 1
    #Password config
    #这一步是开启x-pack插件
    xpack.security.enabled: true   
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    EOF
    cat > /myData/kibana/config/kibana.yml<<EOF
    server.name: kibana
    server.host: "0.0.0.0"
    elasticsearch.hosts: [ "http://es服务器的IP:9200" ]
    elasticsearch.username: "elastic"
    elasticsearch.password: "自己待会会设置的密码"
    i18n.locale: "zh-CN"
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    1. 新建容器运行该镜像
    docker run -d -it --restart=always --privileged=true \
    --name=elasticsearch -p 9200:9200 -p 9300:9300 -p 5601:5601 \
     -e "discovery.type=single-node" -e "cluster.name=elasticsearch" \
     -v /myData/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
     -v /myData/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
     -e ES_JAVA_OPTS="-Xms4G -Xmx4G" elasticsearch:7.6.2
     
    #-e ES_JAVA_OPTS="-Xms4G -Xmx4G"  设置运行内存,这个内存不建议太大。因为es走的是直接内存也就是系统内存,所以要预留足够的系统内存。我这台服务器8核16G所以给了4G。如果系统内存预留不足,会导致以后检索时速度达不到预期速度。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 进入es容器设置密码
    docker exec -it elasticsearch /bin/bash
    cd bin
    #开启密码设置
    elasticsearch-setup-passwords interactive
    
    • 1
    • 2
    • 3
    • 4
    #输出 如下
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
    You will be prompted to enter passwords as the process progresses.
    #输入Y
    Please confirm that you would like to continue [y/N]Y
    #依次设置密码
    Enter password for [elastic]:
    Reenter password for [elastic]:
    Enter password for [apm_system]:
    Reenter password for [apm_system]:
    Enter password for [kibana_system]:
    Reenter password for [kibana_system]:
    Enter password for [logstash_system]:
    Reenter password for [logstash_system]:
    Enter password for [beats_system]:
    Reenter password for [beats_system]:
    Enter password for [remote_monitoring_user]:
    Reenter password for [remote_monitoring_user]:
    Changed password for user [apm_system]
    Changed password for user [kibana_system]
    Changed password for user [kibana]
    Changed password for user [logstash_system]
    Changed password for user [beats_system]
    Changed password for user [remote_monitoring_user]
    Changed password for user [elastic]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    1. 修改kibana.yml的配置
    2. 重启es
    exit
    
    • 1
    docker restart elasticsearch
    
    • 1
    1. 新建kibana容器(kibana是一个可视化es数据的管理平台)
    docker run -itd -e ELASTICSEARCH_URL=http://ES服务器IP:9200 --name kibana \
    -v /myData/kibana/config:/usr/share/kibana/config --network=container:elasticsearch kibana:7.6.2
    
    • 1
    • 2
    1. 测试
      http://ES服务器IP:9200
      如下面的效果并能正确登录说明成功了
      注意用户名是elastic
      在这里插入图片描述
      http://kibana服务器IP:5601/
      在这里插入图片描述

    RabbitMQ

    1. 拉镜像
    docker pull rabbitmq:management
    
    • 1
    1. 准备好外部挂载目录
    mkdir -p /myData/rabbitmq/{data,log,conf}
    chmod -R 777 /myData/rabbitmq
    
    • 1
    • 2
    1. 新建容器运行该镜像
    docker run -d -p 5672:5672 -p 15672:15672 \
    -v /myData/rabbitmq/data:/var/lib/rabbitmq -v /myData/rabbitmq/conf:/etc/rabbitmq -v /myData/rabbitmq/log:/var/log/rabbitmq \
    --name rabbitmq --hostname=rabbitmq-1 --restart=always \
    rabbitmq:management
    
    • 1
    • 2
    • 3
    • 4
    1. 进入容器
    docker exec -it rabbitmq  /bin/bash
    
    • 1
    1. 启动可视化插件
    rabbitmq-plugins enable rabbitmq_management
    
    • 1
    1. 建立供外部访问的用户
      先别急着退出来,还在这个容器里
      添加账号 rabbitmqctl add_user 账号 密码
      设置权限 rabbitmqctl set_permissions -p / 账号 ".*" ".*" ".*"
      设置角色rabbitmqctl set_user_tags 账号 administrator
    rabbitmqctl add_user root root
    rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
    rabbitmqctl set_user_tags root administrator
    
    • 1
    • 2
    • 3
    1. 测试
      访问web界面
      http://rabbitmq服务器的IP:15672/
      有个默认账号和密码都是guest
      当然也可以用我们刚创建的那一个
      在这里插入图片描述

    Docker-Compose

    Docker-compose安装

    anaconda

    安装
    官网链接
    参考博客:centos7 安装Anaconda3 亲测成功
    注意安装过程中这个路径是anaconda的文件夹路径,是可以自定义的
    在这里插入图片描述

  • 相关阅读:
    SSM汽车出租管理系统
    函数的用法
    高并发时为什么推荐ReentrantLock而不是synchronized
    工作队列模式(任务队列)| RabbitMQ系列(二)
    java培训技术自定义视图介绍
    ChessGPT:免费好用的国际象棋对弈AI机器人
    【Jenkins】pipeline流水线
    Linux的介绍和安装
    所有专栏博客汇总列表
    数据结构(c语言版) 栈
  • 原文地址:https://blog.csdn.net/qq_51955445/article/details/126288223