• 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启动的事情

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/859630097com/p/16283796.html
Copyright © 2020-2023  润新知