Docker使用进阶篇

文章目录

  • 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_USERRABBITMQ_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;
    在这里插入图片描述

写博客
是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/593036.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

菜鸡学习netty源码(四)—— EventLoopGroup

1.概述 我们前面进行过分析,channel为netty网络操作的抽象类,EventLoop负责处理注册到其上的Channel处理的I/O事件;EventLoopGroup是一个EventLoop的分组,它可以获取到一个或者多个的EventLoop对象。 2.类关系图 NioEventLoopGroup的类继承图,蓝色部分为对应的java类,绿…

当管道运算符遇上无限可能:探索数据流的奇妙之旅

文章目录 序言目的进程间通信的理解进程间通信的发展历史管道创建验证管道的大小管道的4种情况管道的5种特征 序言 通过该命令计算了在当前路径下一共有多少个文件夹的任务 进程虽然有独立性,但是进程并不孤僻,他们之间也会相互进行协作共同完成一件事 这个前提是他们之间的信…

Java如何获取当前日期和时间?

Java如何获取当前日期和时间? 本文将为您介绍 Java 中关于日期和时间获取的方法,以及介绍 Java 8 中获取日期和时间的全新API。 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取,此方法优势是…

Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)

Flutter笔记 Widgets Easier组件库(12)使用消息吐丝(Notify Toasts) - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 29114848416…

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互,可监控 chronyd 的性能并在运…

单例、工厂、策略、装饰器设计模式

1. 单例模式(Singleton Pattern): 单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式的特点是类自己负责保存其唯一的实例,并控制其实例化过程。单例模式广泛应用…

微服务----nacos配置及简单使用

目录 什么是nacos 项目在nacos上进行注册 注入nacos依赖 配置application.yml文件 nacos写入配置文件 首先,还是需要导入依赖 然后在nacos中编写配置文件 prod是我自定义的一个命名空间,在这里面进行配置文件编写~ 启动类上加上注解 编写Patt…

构建智能化监控追踪系统:架构设计与实践

随着信息技术的不断发展,监控追踪系统在各个领域的应用越来越广泛。本文将探讨监控追踪系统的架构设计,介绍其关键特点和最佳实践,助力各行业实现智能化监控与管理。 1. **需求分析与功能设计:** 在设计监控追踪系统之前&#xf…

Microsoft 365 for Mac(Office 365)v16.84正式激活版

office 365 for mac包括Word、Excel、PowerPoint、Outlook、OneNote、OneDrive和Teams的更新。Office提供了跨应用程序的功能,帮助用户在更短的时间内创建令人惊叹的内容,您可以在这里创作、沟通、协作并完成重要工作。 Microsoft 365 for Mac(Office 36…

HTML/CSS1

1.前置说明 请点这里 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同的…

K8S哲学 - 资源调度 HPA (horizontal pod autoScaler-sync-period)

kubectl exec&#xff1a; kubectl exec -it pod-name -c container-name -- /bin/sh kubectl run 通过一个 deployment来 演示 apiVersion: apps/v1 kind: Deployment metadata:name: deploylabels: app: deploy spec: replicas: 1selector: matchLabels:app: deploy-podt…

加州大学欧文分校英语中级语法专项课程04:Intermediate Grammar Project学习笔记(完结)

Intermediate Grammar Project Course Certificate Specialization Certificate Specialization Intro Course Intro 本文是学习 Coursera: Intermediate Grammar Project 这门课的学习笔记。 文章目录 Intermediate Grammar ProjectWeek 01: IntroductionCapstone Introducti…

解密中国首个“音乐版Sora” | 最新快讯

编辑部发自 AIGC 峰会 量子位公众号 QbitAI 文生图、文生音频、文生视频、AI 搜索引擎……大模型在多模态的进程可谓是愈演愈烈。 而聚焦在国内&#xff0c;有这么一家公司在 AIGC 大热潮的前后&#xff0c;单是“首个”就占了四席&#xff1a; 发布中国首个开源文本大模型国内…

基于OpenCv的图像全景拼接

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计6757字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

【数据结构(十)】Map和Set

❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构知识 目录 1.前言2.搜索树2.1 概念2.2实现二叉搜索树 2.4性能分析3.搜索3.Map3.1Map说明3.2 M…

vue3使用el-autocomplete请求远程数据

服务器端 RestController RequestMapping("/teacher") public class TeacherController {Resourceprivate TeacherService teacherService;GetMapping({"/v1/getTop10TeacherByName/","/v1/getTop10TeacherByName/{name}"})public ResultBean&l…

论文笔记:(Security 22) 关于“二进制函数相似性检测”的调研

个人博客链接 注&#xff1a;部分内容参考自GPT生成的内容 [Security 22] 关于”二进制函数相似性检测“的调研&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《How Machine Learning Is Solving the Binary Function Similarity Problem》&#xff08;Usenix Securi…

C++多态特性详解

目录 概念&#xff1a; 定义及实现&#xff1a; 虚函数重写的两个例外&#xff1a; 1.协变&#xff1a; 2.析构函数的重写&#xff1a; final关键字&#xff1a; override关键字&#xff1a; 多态是如何实现的&#xff08;底层&#xff09;&#xff1a; 面试题&#xff1…

图像识别及分类

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

【网络编程下】五种网络IO模型

目录 前言 一.I/O基本概念 1.同步和异步 2.阻塞和非阻塞 二.五种网络I/O模型 1.阻塞I/O模型 2.非阻塞式I/O模型 ​编辑 3.多路复用 4.信号驱动式I/O模型 5. 异步I/O模型 三.五种I/O模型比较​编辑 六.I/O代码示例 1. 阻塞IO 2.非阻塞I/O 3.多路复用 (1)select …