一、常用容器运行指令
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
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)持久化部署:
docker run -itd --name redis -p 6379:6379 \
--restart=always \
-v $PWD/env/redis/redis.conf:/etc/redis/redis.conf \
-v $PWD/env/redis/data:/data \
redis:5.0.9 redis-server /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 "=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在一个网络,因此可以用容器名直接访问elasticsearc
Nacos
a)在 /env/nacos/conf 目录下(将来映射宿主机 conf 的数据卷)创建日志文件 nacos-logback.xml
注意下面代码中第 4 行的输出位置(将来映射宿主机 log 的数据卷).
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName>
<property name="log.path" value="/env/nacos/logs/logback.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="com.example.logback.filter.MyFilter" /> -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<logger name="com.example.logback" level="warn" />
</configuration>
创建 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