Docker学习之路(七) 软件安装篇 mysql 、mongodb、redis-cluster、rabbitmq
Docker 学习之路 --软件安装篇
加深docker学习映像 安装多个项目可能所用软件 把开发项目打成镜像运行
镜像的各种版本号 具体可查看 Dokerhub 官网:Docker Hub
特别提醒:像数据存储之类的容器 最好是选择数据卷挂载 这样才能更好的保存数据,否则因失误操作删除容器数据丢失悔不则已。
文章目录
(一) mysql 安装
在docker 中 拉取咱们的 mysql 镜像 并运行容器实例
1.拉取对应镜像
docker pull mysql:5.7.30
2.根据镜像 运行容器实例 (暴露端口 数据挂载 用户密码设置等)
docker run --name mysql-service -v /var/lib/mysql/data:/var/lib/mysql -v /var/lib/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=leiMysql.. -d mysql:5.7.30 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time_zone="+8:00"
3.测试连接
4.可选 开启binlog日志
# 设置binlog位置
docker exec mysql-service bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
# 配置 mysql的server-id
docker exec mysql-service bash -c "echo 'server-id=123' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
(二) mongodb 安装
1.拉取对应镜像
docker pull mongo:4.2.5
2.根据镜像 运行容器实例 (暴露端口 数据挂载 用户密码设置等)
docker run -d -p 27017:27017 --name mongo425 -v /usr/local/mongo/conf:/etc/mongo/mongod.conf -v /usr/local/mongo/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=超管账户 -e MONGO_INITDB_ROOT_PASSWORD=超管密码 mongo:4.2.5
3.测试连接
(三) Redis-cluster 集群安装
个人本次采用的是 redis5.0.5 版本
1.先拉取 一个redis5.0.5 镜像
docker pull redis:5.0.5
2.创建配置文件和数据目录
创建 redis-cluster 目录 (存放配置以及数据)
mkdir -p /usr/local/redis-cluster
进入目录内
cd /usr/local/redis-cluster
编写一个集群创建模板
sudo vim redis-cluster.tmpl
填入如下内容:
注意:配置中 cluster-announce-ip 注意换为自己的IP啊
# redis每个节点的端口
port ${PORT}
#开启网络,保证外部可连接
bind 0.0.0.0
# 关闭保护模式
protected-mode no
#设置redis访问密码为Redis123
requirepass Redis123
#设置集群节点间访问密码,密码需跟上面一致
masterauth Redis123
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes-${PORT}.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 自己的IP啊
# 集群节点端口 7000 - 7005
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
#集群pid 文件
pidfile /usr/local/redis-cluster/${PORT}/redis-${PORT}.pid
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 5120mb
# 关闭快照备份
save ""
3.批量创建配置文件和数据目录 (进入/usr/local/redis-cluster 后在终端执行)
for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
随机进入一个文件夹 查看配置文件 发现端口已经是动态更改好了
4.批量启动 redis 容器
注意:这里的–memeory=1G是限制单个 docker 容器占用内存大小为 1G,超过会被进程杀死。 因为我自己服务器较小 (如不需要限制内存大小 则取消 --memory 参数即可)
for port in `seq 7000 7005`; do \
docker run -d -it --memory=1G \
-v /usr/local/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net host \
--sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf; \
done
5.创建redis-cluster 集群
随意进入一个redis 容器中 执行集群创建语句
docker exec -it redis-7000 /bin/bash
执行集群创建语句
redis-cli -a Redis123 --cluster create 192.168.10.122:7000 192.168.10.122:7001 192.168.10.122:7002 192.168.10.122:7003 192.168.10.122:7004 192.168.10.122:7005 --cluster-replicas 1
然后提示创建 成功 就可以测试一波了
6.附赠
如果需要删除doker 搭建的redis 容器
for port in `seq 7000 7005`; do \
docker stop redis-${port};
docker rm redis-${port};
done
(四)Rabbitmq 单机安装
1.拉取对应镜像
docker pull rabbitmq:management
2.启动镜像
- 15672是web管理端端口
- 5672 是容器通信 与项目整合所使用端口
1.使用默认guest账户 /密码登录
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
2.自定义用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=用户名 -e RABBITMQ_DEFAULT_PASS=密码 -p 15672:15672 -p 5672:5672 rabbitmq:management
(五)安装docker容器可视化 Portainer
1.拉取对应镜像
还是拉取最新版
docker pull portainer/portainer
2.选择模式进行启动
远程模式
即安装 portainer 与需要连接的dokcer或许不在一个服务器 那么这时候,我们可以通过端口IP 去连接另一个服务器的docker ,即远程连接模式 (当然 ,远程连接后 选择 本机docker的端口IP 一样可以监听到)
docker run -d -p 9000:9000 --restart=always --name prtainer portainer/portainer
本机模式
即安装 portainer 与需要连接的dokcer在一个服务器,那么本机模式启动即可
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer
3.访问Portainer容器:http://IP:9000
连接docker
选择Local
,代表本地模式,portainer仅管理本机的docker容器
选择Remote
,代表远程模式,名称随意,在Endpoint URL
中填写docker节点的地址:docker远程端口
说明下:
docker 默认是未开启外部访问的
需要连接docker的话 咱们需要额外配置,使其开启远程访问
vim /usr/lib/systemd/system/docker.service
注意查看文件 稍微修改一点
保险起见 复制之前的文件并注释
使用我们下边这行代码配置 其暴露端口 随意 (注意安全组以及防火墙开放对应)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock
重启
systemctl daemon-reload
systemctl restart docker
这样, 该docker 才能被远程通过ip:端口及访问 例如我们的 portanier 或者idea 连接服务器上的 docker
可视化操作docker
然后就可以管理我们的镜像以及容器了,非常方便
(六)ActiveMQ 单机安装
- 61616是 activemq 的容器使用端口
- 8161是 web 页面管理端口
docker run -d --name activemq -p 61616:61616 -p 8161:8161 webcenter/activemq
登录到管理端查看
xxxx:8161
修改密码 (active 镜像里下载了vi命令)
进入容器中
docker exec -it 容器ID /bin/bash
vi conf/jetty-realm.properties
编辑保存自己密码即可
退出后从起容器
ActiveMQ 还有一个镜像 rmohr/activemq ,这个镜像,就下载量来说是高于webcenter/activemq的,其最近更新活跃为一年前,webcenter/activemq 已经很久没更新了,但是任然是可以使用的
docker run -p 61616:61616 -p 8161:8161 \
-v /aa/dir/conf:/opt/activemq/conf \
-v /aa/dir/data:/opt/activemq/data \
rmohr/activemq
(七)SQL SERVER
docker pull microsoft/mssql-server-linux:2017-latest
# 安装
# 说明
#-e ACCEPT_EULA = Y 设置ACCEPT_EULA变量为任何值,以确认你接受最终用户许可协议。 SQL Server 映像的必需设置。
#-e MSSQL_SA_PASSWORD =<YourStrong !Passw0rd> 指定你自己的强密码至少 8 个字符并达到SQL Server 密码要求。 SQL Server 映像的必需设置。
docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456aA!' -p 1433:1433 --name sqlserver2017 -v /var/lib/mssql_data:/opt/mssql_data microsoft/mssql-server-linux:2017-latest
如果需要启动CDC功能,还需要开启代理
# 进入内部 开启代理
docker exec -it sqlserver2017 "bash"
# 内部执行以下命令
/opt/mssql/bin/mssql-conf set sqlagent.enabled true
# 退出容器
exit
# 重启容器
docker restart sqlserver2017