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

posted @ 2022-05-18 10:40  赶星而至  阅读(133)  评论(0编辑  收藏  举报