MySQL

拉取镜像

1
2
docker pull mysql #拉取最新的
docker pull mysql:latest

查看镜像

1
2
docker images 
docker rmi image #删除镜像

创建容器

1
2
3
4
5
6
7
8
9
10
11
12
docker run -d \
--restart=always \
--name mysql \
-v /opt/docker/mysql/data:/var/lib/mysql \
-v /opt/docker/mysql/conf:/etc/mysql \
-v /opt/docker/mysql/log:/var/log/mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci

-d 表示后台运行

-v /itwxe/dockerData/mysql/data:/var/lib/mysql:将数据文件夹挂载到主机 -v /itwxe/dockerData/mysql/conf:/etc/mysql:将配置文件夹挂在到主机,可以在宿主机放一份自定义 my.cnf文件,那么容器就会按自定义配置启动 -v /itwxe/dockerData/mysql/log:/var/log/mysql:将日志文件夹挂载到主机 -p 3306:3306:将容器的3306端口映射到主机的3306端口 -e MYSQL_ROOT_PASSWORD=123456:初始化123456用户的密码 --character-set-server=utf8mb4:设置字符集 --collation-server=utf8mb4_general_ci:排序方式

docker run -p 3306:3306 --name mysql -v /docker/mysql/logs:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=158212 --restart=always --privileged=true -d mysql:latest

1
2
3
4
5
6
7
8
9
docker ps # 查看所有启动的容器
docker ps -a #查看都有容器
docker start mysql # 启动mysql容器
docker exec -it 容器ID /bin/bash # 进入容器
mysql -u 用户名 -p # 进入mysql


docker stop mysql
docker rm mysql # 删除容器

Redis

1
2
3
4
5
6
7
8
9
10
docker run \
-d \
--privileged=true \
--restart always \
-v /opt/docker/redis/conf/data:/data \
-v /opt/docker/redis/conf/redis:/usr/local/etc/redis \
--name redis \
-p 6379:6379 \
redis \
--appendonly yes

-d -> 以后台运行 -p 6379:6379 -> 绑定宿主机端口 --name myredis -> 指定容器名称 --restart always -> 开机启动 --privileged=true -> 提升容器内权限 -v /root/docker/redis/conf:/etc/redis/redis.conf -> 映射配置文件 -v /root/docker/redis/data:/data -> 映射数据目录 --appendonly yes -> 开启数据持久化

1
2
3
4
5
6
7
8
9
10
11
12
13
### 通过 Docker 命令进入 Redis 容器内部
docker exec -it redis /bin/bash
docker exec -it redis bash
### 进入 Redis 控制台
redis-cli
### 添加一个变量为 key 为 name , value 为 bella 的内容
> set name bella
### 查看 key 为 name 的 value 值
> get name


### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis redis-cli

rocketmq

构建namesrv容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 docker run -d \
--restart=always \
--name rmqnamesrv \
--privileged=true \
-p 9876:9876 \
-v /opt/docker/rocketmq/data/namesrv/logs:/root/logs \
-v /opt/docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
apache/rocketmq \
sh mqnamesrv



-e "MAX_POSSIBLE_HEAP=100000000": 设置一个名为 MAX_POSSIBLE_HEAP 的环境变量,其值为 100000000。这可能用于配置 Java 进程的最大堆大小。
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m": 设置一个名为 JAVA_OPT_EXT 的环境变量,用于配置 Java 的一些运行时参数,包括初始堆大小 (-Xms)、最大堆大小 (-Xmx) 和年轻代堆大小 (-Xmn)。
apache/rocketmq: 使用的 Docker 镜像。这里使用的是 Apache RocketMQ 官方提供的镜像。
sh mqnamesrv: 在容器启动后执行的命令,这里是启动 RocketMQ Namesrv 服务的命令。

创建broker节点

数据卷

1
mkdir -p /opt/docker/rocketmq/data/broker/logs/ opt/docker/rocketmq/data/broker/store /opt/docker/rocketmq/conf

修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
vi /opt/docker/rocketmq/conf/broker.conf

# 添加以下内容
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.27.129
diskMaxUsedSpaceRatio=95

  1. brokerClusterName = DefaultCluster 设置 Broker 所属的集群名字。集群是一组具有相同 Cluster Name 的 Broker 的组合。
  2. brokerName = broker-a 设置 Broker 的名字,每个 Broker 在一个集群中必须有唯一的名字。
  3. brokerId = 0 设置 Broker 的唯一标识符。在一个集群中,每个 Broker 都应该有不同的 BrokerId。
  4. deleteWhen = 04 设置消息文件删除的时间,表示在每天的 4 点会删除前一天的消息文件。
  5. fileReservedTime = 48 设置消息文件保留的时间,表示消息文件最多保留 48 小时。
  6. brokerRole = ASYNC_MASTER 设置 Broker 的角色,这里设置为异步主节点。RocketMQ 支持主从复制,该参数用于指定 Broker 的角色。
  7. flushDiskType = ASYNC_FLUSH 设置磁盘刷写方式,这里设置为异步刷写。即,消息写入磁盘的时机可以是异步的。
  8. brokerIP1 = 192.168.27.129 设置 Broker 的 IP 地址。这是 Broker 对外通信的地址。
  9. diskMaxUsedSpaceRatio=95 设置磁盘最大使用空间比例,当磁盘空间使用率达到该比例时,Broker 将开始拒绝写入操作,避免磁盘被写满。

构建broker容器

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
docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
--privileged=true \
-p 10911:10911 \
-p 10912:10912 \
-p 10909:10909 \
-v /opt/docker/rocketmq/data/broker/logs:/root/logs \
-v /opt/docker/rocketmq/data/broker/store:/root/store \
-v /opt/docker/rocketmq/conf/broker.conf:/home/rocketmq/apache/rocketmq-latest/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/apache/rocketmq-latest/conf/broker.conf


[root@bogon conf]# docker run -d \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
--privileged=true \
-p 10911:10911 \
-p 10912:10912 \
-p 10909:10909 \
-v /opt/docker/rocketmq/data/broker/logs:/root/logs \
-v /opt/docker/rocketmq/data/broker/store:/root/store \
-v /usr/local/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/rocketmq/conf/broker.conf


创建rockermq-console服务

拉取rockermq-console镜像

1
docker pull styletang/rocketmq-console-ng

构建rockermq-console容器

1
2
3
4
5
6
7
docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.233.128:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8081:8080 \
--ulimit nofile=1024 \
styletang/rocketmq-console-ng:latest

启动mqnamesrv 和 mqbroker

启动mqnamesrv 代码:

1
docker start mqnamesrv

6.2 启动mqbroker

1
docker start rmqbroker

Nacors

拉取镜像

1
docker pull nacos/nacos-server

挂载目录

1
2
mkdir -p opt/docker/nacos/logs/                      #新建logs目录
mkdir -p opt/docker/nacos/conf/ #新建conf目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker run -d  \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v /opt/docker/nacos/logs/:/home/nacos/logs \
-v /opt/docker/nacos/conf/:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server

docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /opt/docker/nacos/logs/:/home/nacos/logs -v /opt/docker/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server