赞
踩
在日常开发中必要的环境,大多数都是单点后续持续更新集群模式~~~
docker pull redis:7.2.5
编辑redis.conf
- # 绑定地址,默认只允许本机访问
- # bind 192.168.1.100 10.0.0.1
- # bind 127.0.0.1 ::1
- bind 0.0.0.0 # 允许所有地址访问
-
- # 保护模式,默认为yes,建议只在开发环境中设置为no
- protected-mode no
-
- # Redis监听的端口号
- port 6379
-
- # TCP连接队列长度,默认为511
- tcp-backlog 511
-
- # 设置密码,访问Redis需要密码验证
- requirepass root
-
- # 客户端空闲多少秒后关闭连接(0表示禁用)
- timeout 0
-
- # TCP保活时间,单位为秒
- tcp-keepalive 300
-
- # 是否以守护进程方式运行,默认为no
- daemonize no
-
- # 是否通过upstart或systemd管理Redis守护进程,默认为no
- supervised no
-
- # PID文件位置
- pidfile /var/run/redis_6379.pid
-
- # 日志级别,可选项有debug, verbose, notice, warning
- loglevel notice
-
- # 日志文件位置,默认为空,表示输出到标准输出
- logfile ""
-
- # 数据库数量,默认为16个
- databases 30
-
- # 是否显示Redis徽标,默认为no
- always-show-logo yes
-
- # RDB持久化策略,以下表示:
- # 900秒内至少1个key被改变则进行持久化
- # 300秒内至少10个key被改变则进行持久化
- # 60秒内至少10000个key被改变则进行持久化
- save 900 1
- save 300 10
- save 60 10000
-
- # 当RDB持久化出错时,是否停止写入操作,默认为yes
- stop-writes-on-bgsave-error yes
-
- # 是否压缩RDB文件,默认为yes
- rdbcompression yes
-
- # 是否对RDB文件进行校验,默认为yes
- rdbchecksum yes
-
- # RDB文件名
- dbfilename dump.rdb
-
- # 数据目录位置
- dir ./
-
- # 当从节点无法同步主节点数据时,是否继续提供服务,默认为yes
- replica-serve-stale-data yes
-
- # 从节点是否只读,默认为yes
- replica-read-only yes
-
- # 是否使用无盘同步,默认为no
- repl-diskless-sync no
-
- # 是否禁用TCP_NODELAY,默认为no
- repl-disable-tcp-nodelay no
-
- # 从节点的优先级,用于选举主节点时使用,默认为100
- replica-priority 100
-
- # 内存清理策略,以下选项默认为no
- lazyfree-lazy-eviction no
- lazyfree-lazy-expire no
- lazyfree-lazy-server-del no
- replica-lazy-flush no
-
- # 是否开启AOF持久化,默认为no
- appendonly yes
-
- # AOF文件名
- appendfilename "appendonly.aof"
-
- # 在AOF重写期间是否执行fsync,默认为no
- no-appendfsync-on-rewrite no
-
- # AOF文件自动重写百分比,默认为100
- auto-aof-rewrite-percentage 100
- # AOF文件自动重写最小大小,默认为64mb
- auto-aof-rewrite-min-size 64mb
-
- # 是否加载被截断的AOF文件,默认为yes
- aof-load-truncated yes
-
- # 是否使用RDB前缀来加速AOF重写,默认为yes
- aof-use-rdb-preamble yes
-
- # Lua脚本执行的最大时间,单位为毫秒
- lua-time-limit 5000
-
- # 慢查询日志的最大长度,默认为128
- slowlog-max-len 128
-
- # keyspace事件通知,默认为空,表示不通知
- notify-keyspace-events ""
-
- # 哈希表相关配置
- hash-max-ziplist-entries 512
- hash-max-ziplist-value 64
-
- # 列表相关配置
- list-max-ziplist-size -2
- list-compress-depth 0
-
- # 集合相关配置
- set-max-intset-entries 512
-
- # 有序集合相关配置
- zset-max-ziplist-entries 128
- zset-max-ziplist-value 64
-
- # HyperLogLog相关配置
- hll-sparse-max-bytes 3000
-
- # 流相关配置
- stream-node-max-bytes 4096
- stream-node-max-entries 100
-
- # 是否开启rehash,默认为yes
- activerehashing yes
-
- # Redis服务器周期性任务执行频率,默认为10
- hz 10
-
- # 是否动态调整hz值,默认为yes
- dynamic-hz yes
-
- # AOF文件重写
- hz 10
-
- dynamic-hz yes
-
- aof-rewrite-incremental-fsync yes
-
- rdb-save-incremental-fsync yes
创建/usr/local/server/redis目录,将上面配置放到为redis.conf。
创建/usr/local/server/redis/data用户映射redis数据。
- docker run -p 6379:6379 --name redis7.2.5 --restart=always \
- -v /usr/local/server/redis/redis.conf:/etc/redis/redis.conf \
- -v /usr/local/server/redis/data:/data \
- -d redis:7.2.5 redis-server /etc/redis/redis.conf \
- --appendonly yes --requirepass 123456
docker pull mysql:8.0.20
模拟启动获取docker里面mysql的配置文件:
docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20
使用指令查看是否启动成功
docker ps
成功以后创建文件目录
- mkdir /usr/local/server/mysql8.0.20
- mkdir /usr/local/server/mysql8.0.20/data #挂载数据源
- mkdir /usr/local/server/mysql8.0.20/logs #挂载日志
使用指令拷贝docker的mysql配置文件
docker cp mysql:/etc/mysql /usr/local/server/mysql8.0.20
随后查看文件是否存在
主要查看是否有mysql文件夹。mysql文件夹是否有文件。
随后我们暂停mysql容器
- docker stop mysql8
- docker rm -f mysql8 #情况记录缓存
最重要的一步骤
开始挂载
- #在/usr/local/server/mysql8.0.20/mysql/conf.d目录下新增my.cnf
- vim my.cnf
内容如下:
- [mysqld]
- user=mysql
- character-set-server=utf8
- default_authentication_plugin=mysql_native_password
- secure_file_priv=/var/lib/mysql
- expire_logs_days=7
- sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
- max_connections=1000
- [client]
- default-character-set=utf8
- [mysql]
最后启动容器:
- docker run \
- -p 3307:3306 \
- --name mysql8 \
- --privileged=true \
- --restart unless-stopped \
- -v /usr/local/server/mysql8.0.20/mysql:/etc/mysql \
- -v /usr/local/server/mysql8.0.20/logs:/logs \
- -v /usr/local/server/mysql8.0.20/data:/var/lib/mysql \
- -v /etc/localtime:/etc/localtime \
- -e MYSQL_ROOT_PASSWORD=123456 \
- -d mysql:8.0.20
注意我这里暴露的是3307端口,到这一步我们可以查看本地机是否映射成功。
mysql无法被Navicat连接,解决方法如下
1.进入容器
docker exec -it mysql8 /bin/bash
2.登录mysql
- mysql -root -p
- #随后输入你的密码
3.设置权限(依次执行下面sql)
- grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
- use mysql;
- update user set host='%' where user='root';
如果update user set host='%' where user='root';出现错误那么查询root权限
select host,user from user where user='root';
如果是%那就没问题了。
4.最后在更新下密码
- grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;
-
- ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
-
- ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
-
- FLUSH PRIVILEGES;
就OK了,主要我们开放的端口是3307,所以连接的时候要使用3307端口,如果还是连不上有可能是被墙了
- #查看防火墙
- systemctl status firewalld
- #关闭
- systemctl stop firewalld
docker pull rabbitmq:3-management
docker run -e RABBITMQ_DEFAULT_USER=chen -e RABBITMQ_DEFAULT_PASS=123456 --name mq --hostname mq1 -p 15672:15672 -p5672:5672 -d rabbitmq:3-management
- #运行
- docker run \
- -e RABBITMQ_DEFAULT_USER=chen \ #设置登录名称
- -e RABBITMQ_DEFAULT_PASS=123456 \ #设置登录密码
- --name mq \
- --hostname mq1 \
- -p 15672:15672 \ #网页访问端口
- -p 5672:5672 \ #mq连接端口
- -d \
- rabbitmq:3-management
访问地址:http://自己的电脑ip:15672/#/
链接: 百度网盘 请输入提取码 提取码: cf82
因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
docker network create es-net
1.将三个tar放置/tmp下
2.在该目录下执行
- docker load -i es.tar #上到到容器
- docker load -i kibana.tar
3.执行启动
- docker run -d \
- --name es \
- -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
- -e "discovery.type=single-node" \
- -v es-data:/usr/share/elasticsearch/data \
- -v es-plugins:/usr/share/elasticsearch/plugins \
- --privileged \
- --network es-net \
- -p 9200:9200 \
- -p 9300:9300 \
- elasticsearch:7.12.1
命令解释:
-e "cluster.name=es-docker-cluster"
:设置集群名称
-e "http.host=0.0.0.0"
:监听的地址,可以外网访问
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:内存大小
-e "discovery.type=single-node"
:非集群模式
-v es-data:/usr/share/elasticsearch/data
:挂载逻辑卷,绑定es的数据目录
-v es-logs:/usr/share/elasticsearch/logs
:挂载逻辑卷,绑定es的日志目录
-v es-plugins:/usr/share/elasticsearch/plugins
:挂载逻辑卷,绑定es的插件目录
--privileged
:授予逻辑卷访问权
--network es-net
:加入一个名为es-net的网络中
-p 9200:9200
:端口映射配置
在浏览器中输入:http://IP地址:9200 即可看到elasticsearch的响应结果
4.接下来安装kibana
运行docker命令,部署kibana
- docker run -d \
- --name kibana \
- -e ELASTICSEARCH_HOSTS=http://es:9200 \
- --network=es-net \
- -p 5601:5601 \
- kibana:7.12.1
--network es-net
:加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200"
:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601
:端口映射配置
kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
查看运行日志,当查看到下面的日志,说明成功:
此时,在浏览器输入地址访问:http://192.168.150.101:5601,即可看到结果
docker安装分词器(在线安装)
- # 进入容器内部
- docker exec -it elasticsearch /bin/bash
-
- # 在线下载并安装
- ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
-
- #退出
- exit
- #重启容器
- docker restart elasticsearch
docker安装ik分词器(离线安装)
在百度网盘中提出ik文件夹或者自己解压elasticsearch-analysis-ik-7.12.1.zip重命名为ik,如下操作:
安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:
docker volume inspect es-plugins
显示结果:
- [
- {
- "CreatedAt": "2022-05-06T10:06:34+08:00",
- "Driver": "local",
- "Labels": null,
- "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
- "Name": "es-plugins",
- "Options": null,
- "Scope": "local"
- }
- ]
说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data
这个目录中。
然后进入该文件夹将ik文件夹放置该目录即可:
依次执行以下指令:
- # 重启容器
- docker restart es
-
- # 查看es日志
- docker logs -f es
踩坑:
我的是虚拟机,暂停之后,docker无法挂载导致。
- #重启docker
- systemctl restart docker
- #重启容器
- systemctl restart es
- systemctl restart kibana
测试:
docker pull nginx:latest
首次启动:
docker run --restart=always --name=nginx -p 80:80 -d nginx
然后创建目录用与绑定数据卷
- mkdir /usr/local/server/nginx
-
- #随后负责容器nginx配置文件
- docker cp nginx:/etc/nginx /usr/local/server/nginx/conf
- #界面
- docker cp nginx:/usr/share/nginx/html /usr/local/server/nginx/html
- #日志
- docker cp nginx:/var/log/nginx /usr/local/server/nginx/logs
执行完成后分别查看对应目录里面的文件。有对应文件后,停止nginx。
- docker stop nginx
- docker rm nginx
最后重新启动并挂载:
docker run --restart=always --name=nginx -p 3000:80 -v /usr/local/server/nginx/conf:/etc/nginx -v /usr/local/server/nginx/html:/usr/share/nginx/html -v /usr/local/server/nginx/logs:/var/log/nginx -d nginx
跟换本机的配置文件后重新启动容器或者进入nginx找到对应文件目录执行./nginx -s reload
更加详细nginx安装:blog
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。