• docker安装部署, docker部署tomecat, docker部署Nginx, docker部署RabbitMq, docker部署RocketMQ, docker部署MongoDB, docker部署minio, docker部署FastDFS, docker部署Mysql, docker部署redis, docker部署nacos, docker部署ZooKeeper


    docker安装部署

    首先需要虚拟机联网,安装yum工具

    yum install -y yum-utils \
               device-mapper-persistent-data \
               lvm2 --skip-broken
    

    或参考doker笔记:https://www.cnblogs.com/859630097com/p/14597660.html

    然后更新本地镜像源:

    # 设置docker镜像源
    yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    yum makecache fast
    

    然后输入命令:

    yum install -y docker-ce
    

    Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议本地情况直接关闭防火墙!

    启动docker前,一定要关闭防火墙!!

    启动docker前,一定要关闭防火墙!!

    启动docker前,一定要关闭防火墙!!

    # 关闭
    systemctl stop firewalld
    # 禁止开机启动防火墙
    systemctl disable firewalld
    

    然后输入命令,可以查看docker版本:

    docker -v
    

    (可忽略后续步骤直接使用了)更新docker的镜像源为ustc;

    ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

    https://lug.ustc.edu.cn/wiki/mirrors/help/docker

    编辑该文件:

    vi /etc/docker/daemon.json  
    

    在该文件中输入如下内容:

    {
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    

    tomecat容器部署

    1.拉取tomcat镜像

    docker pull tomcat
    

    2.创建容器,设置端口映射、目录映射

    # 在/root目录下创建tomcat目录用于存储tomcat数据信息
    mkdir ~/tomcat
    cd ~/tomcat
    mkdir 
    

    3.运行容器

    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v /root/tomcat/webapps:/usr/local/tomcat/webapps \
    tomcat
    

    参数说明:

    • -p 8080:8080:将容器的8080端口映射到主机的8080端口

      -v /root/tomcat/webapps:/usr/local/tomcat/webapps: 将主机中当前目录挂载到容器的webapps

    Nginx容器部署

    拉取nginx镜像

    docker pull nginx
    

    创建容器,设置端口映射、目录映射

    # 在/root目录下创建nginx目录用于存储nginx数据信息
    mkdir ~/nginx
    cd ~/nginx
    mkdir conf
    cd conf
    # 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
    vim nginx.conf
    
    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    
    
    
    docker run -id --name=nginx \
    -p 80:80 \
    -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /root/nginx/logs:/var/log/nginx \
    -v /root/nginx/html:/usr/share/nginx/html \
    nginx
    
    • 参数说明:
      • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
      • **--v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf **:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
      • **-v /root/nginx/logs:/var/log/nginx **:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

    RabbitMq容器部署

    镜像拉取

    docker pull rabbitmq:3.7-management
    

    创建挂载目录

    mkdir /opt/module/rabbitmq
    cd  /opt/module/rabbitmq
    mkdir rabbitmq0
    

    创建容器

    docker run -d \
    --hostname rabbitmq01 \
    --name rabbitmq_node1 \
    -v /opt/module/rabbitmq/rabbitmq01:/var/lib/rabbitmq \
    -p 15672:15672 \
    -p 5672:5672 \
    -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' \
    rabbitmq:3.7-management
    

    测试:ip+15672端口

    账号密码:guest/guest

    RocketMQ容器部署

    以下命令ip需替换真实ip

    #部署RocketMQ
    #拉取镜像
    docker pull foxiswho/rocketmq:server-4.3.2
    docker pull foxiswho/rocketmq:broker-4.3.2
    
    #创建nameserver容器
    docker create -p 9876:9876 --name rocket-server --restart=always \
    -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
    -e "JAVA_OPTS=-Duser.home=/opt" \
    -v rmqserver-logs:/opt/logs \
    -v rmqserver-store:/opt/store \
    foxiswho/rocketmq:server-4.3.2
    
    #创建broker.conf文件
    mkdir -p ~/rmq/rmqbroker/conf/
    vim ~/rmq/rmqbroker/conf/broker.conf
    brokerIP1=192.168.31.81
    namesrvAddr=192.168.31.81:9876
    brokerName=rocket-broker
    
    #创建broker容器
    docker create -p 10911:10911 -p 10909:10909 --name rocket-broker --restart=always \
    -e "JAVA_OPTS=-Duser.home=/opt" \
    -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
    -v ~/rmq/rmqbroker/conf/broker.conf:/etc/rocketmq/broker.conf \
    -v rmqbroker-logs:/opt/logs \
    -v rmqbroker-store:/opt/store \
    foxiswho/rocketmq:broker-4.3.2
    
    #启动容器
    docker start rmqserver rmqbroker
    
    #停止删除容器
    docker stop rmqbroker rmqserver
    docker rm rmqbroker rmqserver
    
    #部署RocketMQ的管理工具
    docker pull styletang/rocketmq-console-ng:1.0.0
    
    #创建并启动容器
    docker create --name rocketmq-console-ng -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.31.81:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 --restart=always styletang/rocketmq-console-ng:1.0.0
    
    
    

    MongoDB容器部署

    #创建mongo容器,增加安全认证
    docker create --name mongodb -p 27017:27017 --restart=always -v mongodb:/data/db mongo:4.0.3 --auth
    
    #启动容器
    docker start mongodb
    
    #进入容器进行设置
    docker exec -it mongodb /bin/bash
    
    #进入admin数据库
    >mongo
    >use admin
    
    #添加管理员,其拥有管理用户和角色的权限
    db.createUser({ user: 'root', pwd: 'root', roles: [ { role: "root", db: "admin" } ] })
    
    #测试,发现是没有权限操作的
    > show dbs
    
    #进行认证
    >mongo -u "root" -p "root" --authenticationDatabase "admin"
    #或者通过db.auth()进行认证
    >use admin
    >db.auth("root","root");
    
    #通过admin添加普通用户
    db.createUser({ user: 'gxtest', pwd: 'l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV', roles: [ { role: "readWrite", db: "gxtest" } ] });
    
    #通过gxtest用户登录进行测试
    mongo -u "gxtest" -p "l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV" --authenticationDatabase "gxtest"
    
    #测试
    root@5d848955ff7e:/# mongo -u "gxtest" -p "l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV" --authenticationDatabase "admin"
    MongoDB shell version v4.0.3
    connecting to: mongodb://127.0.0.1:27017
    Implicit session: session { "id" : UUID("6c368269-30f0-4b29-a224-05a38b5847e2") }
    MongoDB server version: 4.0.3
    > use gxtest
    switched to db gxtest
    > db.user.insert({id:1,username:'zhangsan',age:20})
    WriteResult({ "nInserted" : 1 })
    > db.user.find()
    { "_id" : ObjectId("5f8eb2726e0de0aa9517afd3"), "id" : 1, "username" : "zhangsan", "age" : 20 }
    

    minio容器部署

    1.创建挂载目录

    mkdir ~/minio
    

    2.运行容器二选一

    第一版本
    docker run -d -p 9000:9000 \
    --name minio \
    --restart=always \
    -e "MINIO_ACCESS_KEY=admin" \
    -e "MINIO_SECRET_KEY=admin123456" \
    -v /root/minio/data:/data \
    -v /root/minio/config:/root/.minio \
    minio/minio:RELEASE.2021-04-18T19-26-29Z server /data
    
    第二版本
    docker run --name minio \
    -p 9000:9000 \
    -p 9001:9001 \
    -d --restart=always \
    -e "MINIO_ACCESS_KEY=admin" \
    -e "MINIO_SECRET_KEY=admin123456" \
    -v /root/minio/data:/data \
    -v /root/minio/config:/root/.minio \
    minio/minio server /data \
    --console-address '0.0.0.0:9001'
    

    FastDFS容器部署

    1.拉取镜像

    docker pull delron/fastdfs
    

    2.创建tracker容器

    docker create --network=host \
    --name tracker \
    --restart=always \
    -v fdfs-tracker:/var/fdfs delron/fastdfs tracker
    

    3.启动容器

    docker start tracker
    

    4.创建storage容器

    docker create --network=host \
    --name storage \
    --restart=always \
    -e TRACKER_SERVER=192.168.3.161:22122 \
    -v fdfs-storage:/var/fdfs \
    -e GROUP_NAME=group1 delron/fastdfs storage
    

    5.启动容器

    docker start storage
    

    6.进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf。

    docker exec -it storage /bin/bash
    
    #默认的http端口为8888,可以修改也可以配置
    # the port of the web server on this storage server
    http.server_port=8888
    

    7.配置nginx,在/usr/local/nginx目录下,修改nginx.conf文件

    默认配置如下:

        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root html;
            }
        }
    

    默认的存储路径为/var/fdfs/data

    Mysql容器部署

    1.创建挂载目录

    mkdir ~/mysql
    

    2.运行容器

    docker run -id \
    -p 3307:3306 \
    --name=mysql_5.7 \
    -v /root/mysql/conf:/etc/mysql/conf.d \
    -v /root/mysql/logs:/logs \
    -v /root/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7
    

    参数说明:

    • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
    • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
    • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
    • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
    • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

    3.进入容器,操作mysql命令

    docker exec -it mysql_5.7 /bin/bash
    

    redis容器部署

    1.镜像拉取

    docker pull redis:5.0
    

    2.镜像运行

    docker run -id \
    --name=c_redis \
    -p 6379:6379 redis:5.0
    

    nacos容器部署

    docker pull nacos/nacos-server
    
    mkdir -p /root/nacos/init.d /root/nacos/logs
    
    touch /root/nacos/init.d/custom.properties
    #添加配置
    management.endpoints.web.exposure.include=*
    
    docker run -d \
    -p 8848:8848 \
    -e MODE=standalone \
    -e PREFER_HOST_MODE=hostname \
    -v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
    -v /root/nacos/logs:/home/nacos/logs \
    --restart always \
    --name nacos \
    nacos/nacos-server
    

    ZooKeeper容器部署

    #拉取zk镜像
    docker pull zookeeper:3.5
    #创建容器
    docker create --name zk --restart=always -p 2181:2181 zookeeper:3.5
    #启动容器
    docker start zk
    

    seata

    不建议docker安装 因为配置不好改,建议用包部署

    参考:

    seata服务端搭建和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 - 赶星而至 - 博客园 (cnblogs.com)

    项目集成seata和mybatis-plus冲突问题解决方案:(分页插件失效, 自动填充失效, 自己注入的id生成器失效 找不到mapper文件解决方案) - 赶星而至 - 博客园 (cnblogs.com)

    xxl-job

    太过简单,不建议docker,修改修改配置 java-jar启动的事情

  • 相关阅读:
    一个网站架构的变迁
    网络编程
    http协议篇
    第1篇 编程能力是什么
    django中的cookies和session机制
    django的认证与授权系统
    python的异常处理
    第0篇
    mysql优化和全局管理杂记
    k8s中pod的资源配置详解
  • 原文地址:https://www.cnblogs.com/859630097com/p/16283796.html
Copyright © 2020-2023  润新知