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/

找到对应的版本下载 

docker - 常用容器部署命令大全(MySQL、MongoDB、Redis、RabbitMQ、ES、Kibana、Nacos、Sentine) 

本地解压,找到 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

docker - 常用容器部署命令大全(MySQL、MongoDB、Redis、RabbitMQ、ES、Kibana、Nacos、Sentine)

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