Nginx

1

MySQL57

简单使用

1
2
3
4
5
# 运行MySQL容器:
docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=<your_password> -d mysql:5.7.42-debian

# 连接到 MySQL 容器:
docker exec -it mysql57 mysql -uroot -p

挂载目录使用

如果删除容器,则容器中的所有数据都会丢失。可以通过挂载宿主机的目录来指定数据位置,并自定义 MySQL 配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mkdir -p /opt/mysql/conf/
mkdir -p /opt/mysql/data

# 参考my.cnf 配置
vim /opt/mysql/conf/my.cnf

# 运行mysql
docker run --name mysql57 --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf/:/etc/mysql/mysql.conf.d/ \
-p 3306:3306 --restart=always \
-d mysql:5.7

# 开机启动
docker update --restart=always mysql57

my.cnf

MySQL 配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf

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
29
30
31
32
33
34
35
36
37
38
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8
[mysql]
no-auto-rehash
default-character-set = utf8
prompt = MySQL <\u> [\d] >
[mysqld]
character-set-server = utf8
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
tmpdir = /var/lib/mysql
secure-file-priv= NULL
symbolic-links=0
skip-name-resolve
# 主服务器唯一ID
server-id=1
max_connections = 3000
max_connect_errors = 6000
# 设置在网络传输中一次消息传输量的最大值 系统默认值 为1MB,最大值是1GB
max_allowed_packet = 32M
sort_buffer_size = 2M
join_buffer_size = 2M
# 服务器线程缓存
thread_cache_size = 300
# 高并发,写入量大的系统,建议把该功能禁掉
# query_cache_size = 64M
transaction_isolation = READ-COMMITTED
# tmp_table_size = 256M
innodb_buffer_pool_size = 2048M
innodb_flush_log_at_trx_commit = 2
#否允许创建未签名的二进制日志函数
log_bin_trust_function_creators=1
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
lower_case_table_names=1
group_concat_max_len=102400

RocketMQ

安装rocketmq

  1. 下载镜像

    1
    docker pull rocketmqinc/rocketmq:4.4.0
  2. 安装NameServer

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mkdir /opt/rocketmq

    docker run -d --name rmqnamesrv -p 9876:9876 \
    -v /opt/rocketmq/data/namesrv/logs:/root/logs \
    -v /opt/rocketmq/data/namesrv/store:/root/store \
    -e "MAX_POSSIBLE_HEAP=100000000" \
    -e "MAX_HEAP_SIZE=256M" \
    -e "HEAP_NEWSIZE=128M" \
    rocketmqinc/rocketmq:4.4.0 sh mqnamesrv
  3. 安装broker

    1
    2
    3
    4
    5
    6
    7
    1,在绝对路径/opt/rocketmq/conf 新建 broker.conf文件
    mkdir -p /opt/rocketmq/conf/

    2,新建 touch broker.conf文件
    vim /opt/rocketmq/conf/broker.conf

    3,复制下面内容到文件中 broker.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 所属集群名称,如果节点较多可以配置多个
    brokerClusterName = DefaultCluster
    brokerName = broker-a
    #0 表示 Master,>0 表示 Slave
    brokerId = 0
    #Broker 对外服务的监听端口 可以在命令时指定端口这里可以去掉
    #listenPort=10911
    #删除文件时间点,默认凌晨 4点
    deleteWhen = 04
    fileReservedTime = 48
    #异步复制Master
    brokerRole = ASYNC_MASTER
    #异步刷盘
    flushDiskType = ASYNC_FLUSH
    #broker监听的ip nameServer地址。宿主机ip
    brokerIP1 = 172.20.96.1
    # 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
    diskMaxUsedSpaceRatio=95
  4. 启动broker

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    docker run -d \
    -p 10911:10911 -p 10909:10909 \
    -v /opt/rocketmq/data/broker/logs:/root/logs \
    -v /opt/rocketmq/rocketmq/data/broker/store:/root/store \
    -v /opt/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
    --name rmqbroker \
    --link rmqnamesrv:namesrv \
    -e "NAMESRV_ADDR=namesrv:9876" \
    -e "MAX_POSSIBLE_HEAP=200000000" \
    -e "JAVA_OPT=${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m" \
    rocketmqinc/rocketmq:4.4.0 \
    sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

安装控制台-admin

  1. 拉取镜像

    1
    docker pull styletang/rocketmq-console-ng
  2. 启动rocketmq 控制台

    1
    docker run -d --name rmq-dashboard  --link rmqnamesrv:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.20.96.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 19876:8080 -t styletang/rocketmq-console-ng

RabbitMQ

  • 使用官方

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 查找镜像
    docker search rabbitmq
    # 安装镜像
    docker pull rabbitmq
    # 运行rabbitmq 创建镜像
    docker run --name rabbitmq \
    -d --hostname localhost \
    -p 15672:15672 \
    -p 5672:5672 \
    rabbitmq:latest
  • 拉取镜像:

    1
    docker pull rabbitmq:management
  • 启动rabbitMQ

    1
    docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
  • 复杂版(设置账户密码,hostname)

    1
    docker run -d -p 15672:15672  -p  5672:5672  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmqhostone  rabbitmq:management

Redis

  • 6.0

    1
    2
    sudo mkdir -p /mydata/redis/{conf,data}
    wget http://download.redis.io/redis-stable/redis.conf -O /mydata/redis/conf/redis.conf
    1
    2
    3
    4
    5
    6
    7
    [root@node1 ~]# docker run -p 6379:6379 --name redis6 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:6.0.8 redis-server /etc/redis/redis.conf
    注:可以使用以下命令查看正在运行的容器:

    [root@node1 ~]# docker exec -it redis6 /bin/bash
    root@8765a0c3657c:/data# redis-cli
    127.0.0.1:6379> ping
    PONG

部署Redis集群

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
29
30
31
32
33
34
35
36
37
38
39
# 创建网卡
docker network create redis --subnet 172.38.0.0/16

# 通过脚本创建六个redis配置
for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >> /mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

# 通过脚本运行六个redis
for port in $(seq 1 6); do \
docker run -p 637${port}:6379 -p 1667${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} \
redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done

# 访问 redis
docker exec -it redis-1 /bin/sh #redis默认没有bash
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

# 使用集群模式登录进行操作
/data # redis-cli -c
127.0.0.1:6379> set name "good"
-> Redirected to slot [5798] located at 172.38.0.12:6379
OK