服务端依赖安装
今天分享快速安装Docker,以及使用Docker安装MySQL,Redis,MongoDB,Kafka,ETCD等开源组件教程。
下面教程是真实开源的IM项目,是博主所在公司项目,开源项目Open-IM-Server地址:https://github.com/OpenIMSDK/Open-IM-Server。
docker进阶,docker-compose版本:docker-compose版本 一键部署Open-IM-Server
如果觉得一个个用docker安装麻烦:可使用docker-compose一键安装。
Docker安装
便携式安装
1.一键安装命令
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2.创建Docker用户组
sudo groupadd docker
3.将登陆用户加入到docker用户组中,解决Docker执行命令权限问题
sudo usermod -aG docker $(whoami)
4.更新用户组
newgrp docker
5.添加Docker镜像源(根据服务器的不同,选择不同镜像源)
vim /etc/docker/daemon.json
#阿里源
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
6.重启Docker使配置生效
systemctl restart docker
MySQL
Docker安装MySQL
1.拉取MySQL 5.7版本官方镜像
docker pull mysql:5.7
2.启动MySQL镜像创建容器
docker run -p 3306:3306 --name mysql -v /home/mysql/data:/var/lib/mysql --restart always -e MYSQL_ROOT_PASSWORD=123 -idt mysql:5.7
-p:将本机端口3306映射到容器3306端口
–name:mysql 启动镜像后容器名
-v :将宿主机目录/home/mysql/data,挂载到容器目录/var/lib/mysql
–restart:always 容器始终自启动
-e :设置参数 MYSQL_ROOT_PASSWORD 指定登录密码,这里设置的是123,可替换自己的密码
-i:让容器的标准输入保持打开
-d: 后台运行容器
-t:让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
3.查看MySQL服务是否整形运行
docker ps
4.使用Navicat或其他数据库可视化工具,连接安装的数据库。
MongoDB
Docker安装MongoDB
1.拉取MongoDB官方镜像
docker pull mongo
2.启动MongoDB镜像
docker run -p 27017:27017 --name mongo -v /home/mongodb/data:/data/db --restart always -idt mongo:latest
-p:宿主机端口27017映射到容器27017端口
–name:mongo 启动镜像后容器服务名
-v:宿主机目录/home/mongodb/data,挂载到容器目录/data/db,容器数据映射到宿主机
–restart:always 容器自启动
-i:让容器的标准输入保持打开
-d: 后台运行容器
-t:让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
3.查看MongoDB服务是否正常运行
docker ps
4.以admin用户身份进入mongo
docker exec -it mongo mongo admin
5.创建管理员用户:root和密码:123
db.createUser({ user: 'root', pwd: '123', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
6.退出容器
exit
7.使用MongoDB官方可视化工具MongoDB Compass或其它客可视化工具连接
连接mongo Authentication可选择none直接登录,如果选择username/password,账号密码就是上一步创建管理员设值的账号和密码。
Redis
Docker安装Redis
1.拉取Redis官方镜像
docker pull redis
2.启动Redis镜像
#无配置文件启动
docker run -p 6379:6379 -v /home/redis/data:/data -v /etc/localtime:/etc/localtime --name redis --restart always -idt redis
#需要配置文件
docker run -p 6379:6379 -v /home/redis/data:/data -v /home/redis/config/redis.conf:/usr/local/redis/config/redis.conf -v /etc/localtime:/etc/localtime --name redis --restart always -idt redis redis-server /usr/local/redis/config/redis.conf
-p:6379:6379 宿主机端口6379映射容器6379端口
-v: /etc/localtime:/etc/localtime容器同步宿主机
-v:/home/redis/data:/data 宿主机目录/home/redis/data挂载到容器目录/data,容器数据映射到宿主机
-v: /home/redis/config/redis.conf:/usr/local/redis/config/redis.conf宿主机配置文件挂载到容器中
–name:redis 启动镜像后容器服务名
–restart:always 容器自启动
-i:让容器的标准输入保持打开
-d: 后台运行容器
-t:让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
redis-server /usr/local/redis/config/redis.conf
:启动redis 使用配置文件方式启动
3.查看Redis服务是否正常运行
docker ps
Kafka
Docker安装Kafka
Kafka安装有点特殊,在Kafka设计中选择了使用zookeeper来进行所有Broker的管理。所以安装Kafka之前,需要安装zookeeper,同时也要启动zookeeper。
1.拉取Kafka依赖镜像zookeeper
docker pull wurstmeister/zookeeper
2.启动zookeeper镜像作为Kafka依赖服务
docker run -p 2181:2181 -v /etc/localtime:/etc/localtime --name zookeeper --restart always -d wurstmeister/zookeeper
-p:2181:2181
宿主机端口2181映射容器2181端口
-v:/etc/localtime:/etc/localtime
容器时间同步宿主机时间
–name:zookeeper
启动镜像后容器服务名
–restart:always
容器始终自启动
-d:后台运行
3.查看zookeeper服务是否正常运行
docker ps
4.拉取Kafka镜像(stars最多的Kafka非官方镜像,可使用docker search Kafka查看)
docker pull wurstmeister/kafka
5.启动Kafka镜像
X.X.X.X 是宿主机ip地址,部署的时候需要替换成自己的服务器ip地址
docker run -p 9092:9092 -v /etc/localtime:/etc/localtime --name kafka --restart always -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=X.X.X.X:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://X.X.X.X:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -d wurstmeister/kafka
-p:9092:9092
本机端口9092映射到容器9092端口
-v:/etc/localtime:/etc/localtime
容器时间同步宿主机时间
–name:kafka
启动镜像后容器服务名
–restart:always
容器始终自启动
-e:KAFKA_BROKER_ID=0
在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e:KAFKA_ZOOKEEPER_CONNECT=X.X.X.X:2181
连接zookeeper地址和端口
-e:KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://X.X.X.X:9092
kafka listeners注册到zookeeper中,是暴露给外部的服务
-e:KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
kafka真正监听的listeners
6.查看Kafka服务是否正常运行
docker ps
Etcd
Etcd镜像需要去Github官方仓库发行页安装,有很多开发以及测试版本,寻找一个验证后的稳定版本,依据步骤,以及启动实例代码,启动拉取的镜像。
Etcd Github官方发行页:https://github.com/etcd-io/etcd/releases
Docker安装Etcd
1.拉取Github发行页上 Etcd最新稳定版镜像
#当前官方etcd 最新稳定版是v3.2.32
docker pull quay.io/coreos/etcd:v3.2.32
2.启动Etcd
docker run -p 2379:2379 -p 2380:2380 \
--name etcd-v3.2.32 --restart=always -d\
quay.io/coreos/etcd:v3.2.32 \
/usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new
-p: 2379:2379
本机端口2379映射容器2379端口
-p: 2380:2380
本机端口2380映射容器2380端口
–name: etcd-v3.2.32
启动镜像后容器名称
–data-dir: /etcd-data
指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置
–listen-client-urls: http://0.0.0.0:2379
侦听客户端流量的URL列表
–advertise-client-urls: http://0.0.0.0:2379
告知客户端url, 对外提供服务的url
–listen-peer-urls: http://0.0.0.0:2380
监听URL,用于与其他节点通讯
–initial-advertise-peer-urls: http://0.0.0.0:2380
告知集群其他节点url.(对于集群内提供服务的url
)
–initial-cluster: s1=http://0.0.0.0:2380
用于引导的初始群集配置
–initial-cluster-token: tkn
引导期间etcd集群的初始集群令牌。
–initial-cluster-state: new
初始群集状态(“new”或“existing”)。new
对于初始静态或DNS引导过程中存在的所有成员,如果将此选项设置为existing
,则etcd将尝试加入现有集群.