一、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_FLUSH
namesrvAddr=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端口