docker – 常用容器部署命令大全(MySQL、MongoDB、Redis、RabbitMQ、ES、Kibana、Nacos、Sentine)
•
大数据
目录
一、常用容器运行指令
MySQL
Redis
RabbitMQ
ElasticSearch & kibana
Nacos
Sentinel
一、常用容器运行指令
MySQL
docker run -d -p 3306:3306 \ --name mysql \ -v $PWD/env/mysql/conf:/etc/mysql \ -v $PWD/env/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=1111 \ mysql:5.7
使用以下命令进入容器中的 mysql 才可以使用中文
docker exec -it mysql env LANG=C.UTF-8 /bin/bash
MongoDB
a)未持久化部署
docker run -d --name mongo -p 27017:27017 mongo:5.0.5
b)持久化部署
docker run -d --name mongo -p 27017:27017 \ -v $PWD/env/mongo/data:/data/db \ -v $PWD/env/mongo/conf:/data/dataconfigdb \ mongo:5.0.5
Redis
a)未持久化部署:
docker run -itd -p 6379:6379 --name redis redis:5.0.9
b)持久化部署:
如果需要按照 redis.conf 配置运行 redis ,那么需要先下载 redis.conf 模板,地址如下
http://download.redis.io/releases/
找到对应的版本下载
本地解压,找到 redis.conf 文件,上传到服务器 env/redis/conf/ 目录下(自定义目录)
redis.conf 修改内容如下(仅供参考)
# 设置 redis 连接密码 requirepass 123456789 # 数据持久化 - 开始 # 开启 AOF 持久化 appendonly yes # 如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis cache # 如果从外网访问,则会返回相应的错误信息 protected-mode no # AOF文件刷新的方式 # always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。 # everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。 # no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。 appendfsync everysec # 随着持久化的不断增多,AOF文件会越来越大,这个时候就需要AOF文件重写了。AOF文件重写 # 如果该参数取值为yes,那么在重写AOF文件时能提升性能,但可能在重写AOF文件时丢失数据。 # 如果取值为no,则不会丢失数据,但较取值为yes的性能可能会降低。默认取值是no。 no-appendfsync-on-rewrite no # AOF文件重写 # 参数能指定重写的条件,默认是100, # 即如果当前的AOF文件比上次执行重写时的文件大一倍时会再次触发重写操作。 # 如果该参数取值为0,则不会触发重写操作。 auto-aof-rewrite-percentage 100 # AOF文件重写 # 指定触发重写时AOF文件的大小,默认是64MB。 auto-aof-rewrite-min-size 64mb # auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 两个参数指定的重写条件是“And”的关系。 # 即只有当同时满足这两个条件时才会触发重写操作。 # 数据持久化 - 结束 # 绑定redis服务器网卡IP,默认为127.0.0.1,即本地回环地址。 # 这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接。 # 如果bind选项为空的话,那会接受所有来自于可用网络接口的连接。 # 当然,你也可以直接把 bind 注释掉 bind 172.0.0.4 127.0.0.1 # Redis key 过期事件监听 notify-keyspace-events Ex
通过以下命令部署即可.
docker run -itd --name redis -p 6379:6379 \ --restart=always \ -v $PWD/env/redis/conf:/usr/local/etc/redis \ -v $PWD/env/redis/data:/data \ redis:5.0.9 redis-server /usr/local/etc/redis/redis.conf
RabbitMQ
docker run -d --name mq \ -e RABBITMQ_DEFAULT_USER=root \ -e RABBITMQ_DEFAULT_PASS=1111 \ -v $PWD/env/rabbitmq/lib:/var/lib/rabbitmq \ -v $PWD/env/rabbitmq/log:/var/log/rabbitmq \ -p 15672:15672 \ -p 5672:5672 \ rabbitmq:3.8-management
ElasticSearch & kibana
a)为了 es 和 将来要下载的 kibana 进行互联,因此需要我们去创建一个网络.
docker network create es-net
b) ES 部署
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v $PWD/env/es/data:/usr/share/elasticsearch/data \
-v $PWD/env/es/plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
Ps:如果报错 “Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes”, 说明数据卷权限不够,通过命令以下命令即可放大权限,然后,最后重启 es 即可~
chmod 777 /env/es/**
- -e “ES_JAVA_OPTS=-Xms512m -Xmx512m”`:内存大小(es 底层是 Java 实现的,所以这里是配置 jvm 的堆内存大小),值得注意的是,这里 512 已经是能配置的最小内存了,不能更小,否则回出现内存不足的情况.
- -e “discovery.type=single-node”`:非集群模式(single node 就是单个节点的意思)
- -v es-data:/usr/share/elasticsearch/data`:挂载数据卷,绑定es的数据目录
- -v es-plugins:/usr/share/elasticsearch/plugins`:挂载数据卷,绑定es的插件目录(将来作拓展,就要在这里存东西)
- –privileged`:授予数据卷访问权
- –network es-net` :加入一个名为es-net的网络中
- -p 9200:9200: 这里是 http 协议端口,供我们访问.
- -p 9300:9300:这里是 es 容器各个节点之间的互联端口.(这个端口现在用不到,不暴露也没关系,只是后面部署集群的时候,还得打开).
如果要设置集群,可以如下配置:
- -e “cluster.name=es-docker-cluster”`:设置集群名称
c)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.
Nacos
a)在 /env/nacos/conf 目录下(将来映射宿主机 conf 的数据卷)创建日志文件 nacos-logback.xml
注意下面代码中第 4 行的输出位置(将来映射宿主机 log 的数据卷).
logback
<!-- -->
ERROR
%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
${log.path}
${log.path}.%d{yyyy-MM-dd}.zip
%date %level [%thread] %logger{36} [%file : %line] %msg%n
创建 nacos 数据存放位置
docker run -d -p 8848:8848 \ --name nacos \ --env MODE=standalone \ -v $PWD/env/nacos/conf:/home/nacos/conf \ -v $PWD/env/nacos/logs:/home/nacos/logs \ -v $PWD/env/nacos/data:/home/nacos/data \ nacos/nacos-server:1.4.2
- MODE=standalone 单机版
- –restart=always 开机启动
Ps:默认账号密码都是 nacos
Sentinel
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard:1.8.3
Ps:默认账号和密码都是 sentinel

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/295a0938f0.html
