一、Docker安装
以下均以CentOS 7为例
1、安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2、启动和校验
# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
3、配置镜像加速
以阿里云为例,进入阿里云控制台->产品->容器->容器镜像服务ACR->镜像加速器->找到命令,按照示例程序来,例:
# 创建目录
mkdir -p /etc/docker# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker
二、Docker常用软件安装
2.1、MySQL
1、建三个文件夹data、conf、init,这里我建在了/root/mysql目录下,大家可根据自己情况
2、run,没有镜像的话会自动安装
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v /root/mysql/data:/var/lib/mysql \-v /root/mysql/conf:/etc/mysql/conf.d \-v /root/mysql/init:/docker-entrypoint-initdb.d \mysql
2.2、Redis
1、创建文件夹data、conf、log,这里我创建到/root/redis目录下
2、去官网下载配置文件 Redis官网 和自己版本对应好就行
然后修改一下配置文件,例如:
bind 127.0.0.1
#注释掉这部分,使redis可以外部访问
daemonize no
#用守护线程的方式启动
requirepass 你的密码
#给redis设置密码
appendonly yes
#redis持久化 默认是no
tcp-keepalive 300
#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
下载下来的redis.conf放置在conf目录下,再在log目录下新建redis.log文件夹,赋予777权限。
3、 安装Redis
docker pull redis # 安装最新版本docker pull redis:5.0.7 # 指定版本
4、运行
docker run -d \--name redis \-p 6379:6379 \-v /root/redis/data:/data \-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \-v /root/redis/log/redis.log:/var/log/redis.log \-d redis:5.0.7 \redis-server /etc/redis/redis.conf
对上面命令进行一个解释:
docker run -d \--name redis \-p 6379:6379 \ # 把容器6379端口映射到宿主6379-v /root/redis/data:/data \ # 将主机上的 /root/redis/data 目录挂载到容器内部的 /data 目录,以便可以将 Redis 数据持久化到主机-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \ # 将主机上的 /root/redis/conf/redis.conf 文件挂载到容器内部的 /etc/redis/redis.conf 文件,以便可以使用自定义的 Redis 配置文件-v /root/redis/log/redis.log:/var/log/redis.log \ # redis日志-d redis:5.0.7 \ # 指定要使用的 Redis 镜像及版本号,并在后台运行容器redis-server /etc/redis/redis.conf # # 在容器内部执行的命令,启动 Redis 服务,并使用 /etc/redis/redis.conf 配置文件
2.3、RocketMQ
1、创建文件夹rocketmq,其下broker、nameserver,broker下面创建conf、logs、store,nameserver下面创建logs、store
2、在/root/rocketmq/broker/conf下创建broker.conf,并配置如下:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSHnamesrvAddr=IP:9876
brokerIP1=IP
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
namesrvAddr和brokerIP1必须是具体的IP地址
3、拉取rocketmq
docker pull apache/rocketmq # 拉最新docker pull apache/rocketmq:4.9.4 # 拉取指定版本
4、启动nameserver
docker run -d \--name mqnameserver \-p 9876:9876 \-v /root/rocketmq/nameserver/logs:/root/logs \-v /root/rocketmq/nameserver/store:/root/store \-d apache/rocketmq:4.9.4 \sh mqnamesrv
解释
-name mqnameserver | 把容器的名字设置为mqnameserver
-p 9876:9876| 把容器内的端口9876挂载到宿主机9876上面
-v /root/rocketmq/nameserver/logs:/root/logs | 把容器内的/root/logs日志目录挂载到宿主机的
/root/rocketmq/nameserver/store:/root/store | 把容器内的/root/store数据存储目录挂载到宿主机
-e “MAX_POSSIBLE_HEAP=100000000” | 设置容器的最大堆内存为100000000
apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqnamesrv | 启动namesrv服务
5、启动broker
docker run -d \--name mqbroker \--link mqnameserver:namesrv \-p 10911:10911 \-p 10909:10909 \-v /root/rocketmq/broker/logs:/root/logs \-v /root/rocketmq/broker/store:/root/store \-v /root/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.9.4/conf/broker.conf \-e "NAMESRV_ADDR=namesrv:9876" \-d apache/rocketmq:4.9.4 \sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf
解释
–link mqnameserver:namesrv | 和rmqnamesrv容器通信
-p 10911:10911 | 把容器的非vip通道端口挂载到宿主机
-p 10909:10909 | 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876” | 指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker | 指定broker服务的最大堆内存
apache/rocketmq:4.9.4 | 使用的镜像名称
sh mqbroker -c /opt/rocketmq-4.9.4/conf/broker.conf | 指定配置文件启动broker节点
6、创建rocketmq-console服务
拉取rocketmq-console
docker pull pangliang/rocketmq-console-ng
启动rocketmq-console
docker run -d \--name mqconsole \-p 9999:8080 \-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.164.100:9876 \-Dcom.rocketmq.sendMessageWithVIPChannel=false" \pangliang/rocketmq-console-ng
解释上面语句
-name rmqadmin | 把容器的名字设置为rmqadmin
-e “JAVA_OPTS=-Drocketmq.namesrv.addr=IP:9876 | 设置namesrv服务的ip地址
-Dcom.rocketmq.sendMessageWithVIPChannel=false” | 不使用vip通道发送消息
–p 9999:8080 | 把容器内的端口8080挂载到宿主机上的9999端口