服务端依赖安装

今天分享快速安装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

docker中有哪些依赖包 docker安装依赖_redis

4.使用Navicat或其他数据库可视化工具,连接安装的数据库。

docker中有哪些依赖包 docker安装依赖_docker_02

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

docker中有哪些依赖包 docker安装依赖_docker中有哪些依赖包_03

4.以admin用户身份进入mongo

docker exec -it mongo mongo admin

docker中有哪些依赖包 docker安装依赖_Docker_04

5.创建管理员用户:root和密码:123

db.createUser({ user: 'root', pwd: '123', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

docker中有哪些依赖包 docker安装依赖_redis_05

6.退出容器

exit

7.使用MongoDB官方可视化工具MongoDB Compass或其它客可视化工具连接

连接mongo Authentication可选择none直接登录,如果选择username/password,账号密码就是上一步创建管理员设值的账号和密码。

docker中有哪些依赖包 docker安装依赖_Docker安装组件_06

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

docker中有哪些依赖包 docker安装依赖_Docker_07

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

docker中有哪些依赖包 docker安装依赖_docker中有哪些依赖包_08

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

docker中有哪些依赖包 docker安装依赖_redis_09

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将尝试加入现有集群.