Docker DeskTop 设置容器的数据卷
-
需要在主机上设置数据卷的路径(一级目录)
“设置“中
”Resource“ 中
-
“File Sharing” 中设置路径(表示主机的数据卷在
/data
目录中)/data
-
创建网络
未指定驱动,默认使用 bridge 网络
-
命令
# 创建网络 docker network create default_network # 查看所有网络 docker network ls # 删除网络 docker network rm default_network
Redis 容器的启命令
-
前期准备
将宿主机的挂载目录权限改为
777
。注意 my.cnf 权限为644
才可以正常启动镜像参考地址redis 镜像好像没有配置文件
redis.conf
(我没有找到),所以需要准备一份 redis 的配置文件。按照环境需要修改配置文件
执行命令
-
命令中挂载了两个路径
- 配置文件挂载
- 数据目录挂载(两种数据备份文件)
-
命令包含容器启动、数据卷挂载等
docker run \ -p 6379:6379 \ --privileged=true \ -v /data/appData/dockerData/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /data/appData/dockerData/redis/data:/data \ --name=redis \ -d redis \ redis-server /etc/redis/redis.conf
Mysql 8容器的启动命令
-
前期准备
将宿主机的挂载目录权限改为
777
-
准备配置文件
my.cnf
,原有的镜像配置文件存在一个配置为secure-file-priv=NULL
直接挂载该配置文件会存在问题,需要进行替换如下配置[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= /var/lib/mysql character-set-server=utf8 # 服务器编码 collation-server=utf8_general_ci # 排序规则 [client] default-character-set=utf8
设置用户
root
,密码为123456
-
命令包含容器启动、数据卷挂载等
docker run \ -p 3306:3306 \ --privileged=true \ -v /data/appData/dockerData/mysql/data:/var/lib/mysql \ -v /data/appData/dockerData/mysql/conf/conf.d:/etc/mysql/conf.d \ -v /data/appData/dockerData/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -e MYSQL_ROOT_PASSWORD=123456 \ --name=mysql8 \ -d mysql
RocketMQ 容器启动命令
nameserver 容器启动命令
-
前期准备
将宿主机的挂载目录权限改为
777
-
准备配置
namesrv.conf
(自定义)# namesrv端口号 listenPort=8876
-
命令包含启动、数据卷挂载等
docker run \ --network default_network \ --network-alias mqNamesrv \ -p 9876:9876 \ --privileged=true \ -v /data/appData/dockerData/rocketmq/mqnamesrv/conf/namesrv.conf:/home/rocketmq/rocketmq-4.5.2/conf/namesrv.conf \ -v /data/appData/dockerData/rocketmq/mqnamesrv/logs:/home/rocketmq/logs \ -e "JAVA_OPT_EXT=-Xms128M -Xmx128M -Xmn128m" \ --name=mqNamesrv \ -d foxiswho/rocketmq:server
broker 容器启动命令
-
前期准备
将宿主机的挂载目录权限改为
777
-
准备
broker.conf
# 指定整个broker集群的名称,或者是RocketMQ集群名称 brokerClusterName=DefaultCluster # 指定master-slave集群名称,一个RocketMQ集群可以包含多个master-slave集群 brokerName=broker_a # master的brokerId=0 brokerId=0 # 指定删除消息存储过期文件的时间为凌晨4点 deleteWhen=04 # 指定未发生更新的消息存储文件保留时长为48小时,48小时后过期,将会被删除 fileReservedTime= # 指定当前broker为异步复制master brokerRole=ASYNC_MASTER # 指定刷盘策略为异步刷盘 flushDiskType=ASYNC_FLUSH # broker_a-master端口号 listenPort=10991 # 指定nameServer的地址 #namesrvAddr=ip:port;ip:port namesrvAddr=mqNamesrv:9876 # 指定消息存储相关的路径。默认路径为~/store目录 storePathRootDir=/home/rocketmq/store storePathCommitLog=/home/rocketmq/store/commitLog storePathConsumerQueue=/home/rocketmq/store/consumerqueue storePathIndex=/home/rocketmq/store/index storeCheckpoint=/home/rocketmq/store/checkpoint abortFile=/home/rocketmq/store/abort
-
命令
docker run \ --network default_network \ --network-alias mqBroker \ -p 10911:10911 \ --privileged=true \ --name=mqBorker \ -v /data/appData/dockerData/rocketmq/mqbroker/conf/broker.conf:/etc/rocketmq/broker.conf \ -v /data/appData/dockerData/rocketmq/mqbroker/store_a:/home/rocketmq/store/ \ -e "JAVA_OPTS=-Duser.home=/opt" \ -e "JAVA_OPT_EXT=-Xms128M -Xmx128M -Xmn128m" \ -d foxiswho/rocketmq:broker
启动控制台服务
-
前期准备
- 准备时区设置文件
/etc/localtime 和 /etc/timezone
,对时区文件复制以供数据卷挂载使用,以便解决解决界面错误提示This date have not data
问题。
- 准备时区设置文件
-
命令
docker run \ --network default_network \ --network-alias mqConsole \ --privileged=true \ --name=mqConsole \ -p 9000:8080 \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=mqNamesrv:9876 \ -Dcom.rocketmq.sendMessageWithVIPChannel=false \ -Duser.timezone='Asia/Shanghai'" \ -v /data/appData/dockerData/rocketmq/mqconsole/timezone:/etc/timezone \ -v /data/appData/dockerData/rocketmq/mqconsole/localtime:/etc/localtime \ -d styletang/rocketmq-console-ng
-
参考文档