1. 安装docker
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y #安装ce版(社区版) ee为企业版
systemctl enable docker && systemctl start docker #设置开机启动并立即启动docker
2. 部署nginx
docker run --name nginx -d -p 80:80 nginx:1.15
3. 部署redis5
docker run --name redis -p 6379:6379 -d redis:5.0.7 #redis配置密码需在配置文件中设置
#进入redis容器
docker exec -it redis /bin/bash
#压力测试
redis-benchmark -n 100000 -q
4. 部署mysql5.7
docker run --name mysql -e MYSQL_ROOT_PASSWORD=666666 -d -p 3306:3306 mysql:5.7
目录和配置文件挂载,配置文件需要提前创建好
docker run --name mysql -v /data/mysql/etc/my.cnf:/etc/mysql/my.cnf:rw \
-v /data/mysql/data:/var/lib/mysql:rw -v /data/mysql/logs:/var/log/mysql:rw \
-e MYSQL_ROOT_PASSWORD=666666 -e TZ=Asia/Shanghai -d -p 3306:3306 mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
cat /data/mysql/etc/my.cnf
[mysqld]
server_id=1
log_bin = mysql-bin
binlog_format = ROW
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
5. 部署mongodb4.2.6
docker run -itd --name mongo -v /data/mongo/data:/data/db -p 27017:27017 mongo --auth
注意:默认数据是存在容器系统的/data/db
目录下的 --auth是开启认证
5.1 设置密码
#进入容器
docker exec -it mongo bash
#连接到mongo
mongo
#查看当前版本
db.version()
#切换到admin库
use admin
#创建管理员权限用户
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
#认证
db.auth('admin','123456');
#创建普通读写 并指定库用户
db.createUser({ user:'user',pwd:'123456',roles:[ { role:'readWrite', db: 'testdb'}]});
#必须要在admin库认证
db.auth('user','123456')
#切换到testdb库
use testdb
#插入一条数据到person集合中
db.person.insert({name:'libai-go',age:18})
#查找person集合所有数据
db.person.find({})
6. 部署elasticsearch
#创建一个网络,同一个网络的内的容器,可以通过localhost:port 通信,方便kibana访问es
docker network create somenetwork
#安装elasticsearch
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
7. 部署kibana
#安装kibana
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.6.2
访问http://ip:5601 打开kibana
8. 部署rabbitmq
#安装mq
docker run -itd --rm --hostname rabbitmq-server -v /data/docker/rabbitmq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:3.8.5-management
9. 部署etcd
#安装etcd
docker run -it -d --name etcd -p 2379:2379 -p 2380:2380 --env ALLOW_NONE_AUTHENTICATION=yes bitnami/etcd
#查看状态
docker exec -it etcd etcdctl endpoint status --cluster -w table
命令使用大全
集群docker搭建
10. 部署kafka
因kafka依赖zookeeper,如果已有zk,可以跳过第二步
#1.创建一个单独网络
docker network create app-tier --driver bridge
#2.创建zk容器
docker run -d --name zookeeper-server \
--network app-tier \
-e ALLOW_ANONYMOUS_LOGIN=yes \
bitnami/zookeeper:latest
#3.创建kafka容器
docker run -d --name kafka-server \
--network app-tier \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
bitnami/kafka:latest
#4.创建kafka客户端容器 方便执行各种命令
docker run -it --rm \
--network app-tier \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
bitnami/kafka:latest kafka-topics.sh --list --zookeeper zookeeper-server:2181
11. 部署zookeeper
docker run --name zookeeper --restart always -d zookeeper:3.5
12. 网络版zk和kafka
docker run -d --name zookeeper -p 2181:2181 \
-v /etc/localtime:/etc/localtime wurstmeister/zookeeper
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.11:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.11:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-v /etc/localtime:/etc/localtime wurstmeister/kafka
docker run -d --name kafka-map -p 8080:8080 -e DEFAULT_USERNAME=admin \
-e DEFAULT_PASSWORD=admin dushixiang/kafka-map:latest