文章目录
- 1 前言
- 2 使用Docker安装常用镜像示例
- 2.1 Docker安装RabbitMQ
- 2.2 Docker安装Nacos
- 2.3 Docker安装xxl-job(推荐该方式构建)
- 2.4 Docker安装redis
- 2.5 Docker安装mysql
 
1 前言
上一篇介绍了Docker的基础概念,带你 入门Docker,这篇将介绍一些示例,加深对Docker的理解。
2 使用Docker安装常用镜像示例
在进行相关操作之前,记得运行Docker服务哈,另外,下面的方式有的没有做持久化到磁盘,也没有持久化到mysql,重启后会丢失数据,如果有需要,请参考下面的docker-compose配置
2.1 Docker安装RabbitMQ
实际生产中,建议购买专业版MQ,而不是自建,这个相对不可靠
参考官网:https://www.rabbitmq.com/docs/download
- 查看Docker仓库里的RabbitMQ镜像
 docker search rabbitmq
 安装时,建议使用官方维护的docker镜像,这个stars一般也是最多的
  
但是有时候,你想要的镜像可能搜索不到,需要去官网找镜像:https://hub.docker.com/_/rabbitmq
 
-  下载镜像 
 docker pull rabbitmq:3.13-management
  
-  启动MQ服务 docker run --name rabbit-server -d \ -e RABBITMQ_DEFAULT_USER=test -e RABBITMQ_DEFAULT_PASS=123456 \ -p 15672:15672 \ -p 5672:5672 \ rabbitmq:3.13-management其中, --name指定容器的名字,15672(UI页面通信口)、5672(client端通信口),有时候可能还会用到25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列传输)
 注:如果在云服务上部署,且开启了防火墙,需要在安全组开通一下入方向的15672和5672端口,并且需要再Linux服务器开放端口,否则无法访问Linux服务器开放端口,分别执行以下命令: 
 firewall-cmd --zone=public --add-port=15672/tcp --permanent
 firewall-cmd --zone=public --add-port=5672/tcp --permanent
 然后执行,重新加载防火墙配置
 firewall-cmd --reload 
-  访问MQ管理界面 
 服务启动后,使用 http://127.0.0.1:15672 访问,账号和密码就是刚才启动参数,RABBITMQ_DEFAULT_USER和RABBITMQ_DEFAULT_PASS设置的值
  登录成功,如下界面: 
  
2.2 Docker安装Nacos
-  拉取镜像,这里使用v2.2.1版本 
 docker pull nacos/nacos-server:v2.2.1
-  启动nacos docker run --name nacos -d \ -e MODE=standalone \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ -e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123453456789999876549012345678901234567894234 \ -e NACOS_AUTH_IDENTITY_KEY=SecretKey012345678901234567890123453456789999876549012345678901234567894234 \ -e NACOS_AUTH_IDENTITY_VALUE=SecretKey012345678901234567890123453456789999876549012345678901234567894234 \ nacos/nacos-server:v2.2.1这里的端口一样,需要配资云服务器安全组和防火墙开放端口: 
 Linux服务器开放端口,分别执行以下命令:
 firewall-cmd --zone=public --add-port=8848/tcp --permanent
 firewall-cmd --zone=public --add-port=9848-9849/tcp --permanent
 然后执行,重新加载防火墙配置
 firewall-cmd --reload启动完成,通过 http://ip:8848/nacos 访问 
  注意,这里没有配置持久化,重启后nacos数据会丢失,下面会介绍nacos服务的最终版本
2.3 Docker安装xxl-job(推荐该方式构建)
xxl-job 对应的数据库文件在:https://github.com/xuxueli/xxl-job/blob/master/doc/db/tables_xxl_job.sql
创建xxl-job目录,下面创建logs目录以及conf目录 ,在conf目录下 新建配置文件 application.properties:
### web
server.port=9999
server.servlet.context-path=/xxl-job-admin
### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false
### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://ip:3306/xxl_job?useUnicode=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=666
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000
### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.from=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### xxl-job, access token
xxl.job.accessToken=
### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### xxl-job, log retention days
xxl.job.logretentiondays=30
注意,需要把数据库账号密码修改一下:
 
在conf目录,定义xxl-job.yml,内容如下:
# 定义compose语义版本
version: '3.8'
# 定义服务
services:
  xxl-job:
    image: xuxueli/xxl-job-admin:2.3.0
    container_name: xxl-job
    restart: always
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      PARAMS: '--spring.config.location=/application.properties'
    volumes:
      - "/opt/docker-server/xxl-job/logs:/data/applogs"
      - "/opt/docker-server/xxl-job/conf/application.properties:/application.properties"
    ports:
      - "9999:9999"
    networks:
      - conf_mynet
networks:
  conf_mynet:
    external: true
注意下面标注的细节:
 
在xxl-job目录下,启动docker服务
 docker-compose -f ./conf/xxl-job.yml up -d
访问页面:http://127.0.0.1:9999/xxl-job-admin/
 
2.4 Docker安装redis
-  拉取镜像 
 docker pull redis
-  创建redis目录,然后创建conf以及data目录,然后在conf下创建redis配置文件 redis.conf:# bind 127.0.0.1 -::1 bind 0.0.0.0 # 是否启用保护模式 protected-mode no # redis端口 port 16379 # 密码设置(需要密码就取消下面的注释) requirepass 123456 tcp-backlog 511 # 用户多少秒没有操作就断开连接,设置为0为不断开 timeout 0 # 后端连接会经常断开,设置为60不断开 tcp-keepalive 60 # 是否以守护线程的方式运行 daemonize no pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 16 always-show-logo no set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" # 将数据持久化到dump.rdb的频率 save 3600 1 save 300 100 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb rdb-del-sync-files no dir ./ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no lazyfree-lazy-user-del no lazyfree-lazy-user-flush no oom-score-adj no oom-score-adj-values 0 200 800 disable-thp yes # 是否需要持久化存储 appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes rdb-save-incremental-fsync yes jemalloc-bg-thread yes
-  进入刚才创建的redis目录,创建容器执行shell脚本 redis.sh#!/bin/sh docker run -p 16379:16379 --name redis --restart=always \ -v ./data:/data \ -v ./conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf赋予可执行权限: 
 chmod +x redis.sh
-  启动redis服务 
 ./redis.sh
  
2.5 Docker安装mysql
-  查询镜像 
 docker search mysql
  
-  下载MySQL镜像 
 docker pull mysql
-  运行镜像 
 docker run -d --name=mysql -p 13306:13306 -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
 其中,/opt/mysql/data是宿主机的路径,/var/lib/mysql是容器的路径,-e是指定环境变量
  这里的端口一样,需要配资云服务器安全组和防火墙开放端口: 
 Linux服务器开放端口,分别执行以下命令:
 firewall-cmd --zone=public --add-port=13306/tcp --permanent
 然后执行,重新加载防火墙配置
 firewall-cmd --reload
-  进入容器 
 docker exec -it 6137a06acc14 bash
-  看容器里面的mysql在什么位置 
 whereis mysql
  
-  登录MySQL 
 mysql -u root -p
-  修改密码 
 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-  授权远程登录访问 
 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
 GRANT ALL PRIVILEGES ON *.* TO ' root'@'%';
 FLUSH PRIVILEGES;
  
写博客
是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!
如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!
给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!



















