Docker使用进阶篇

news2024/11/17 4:55:22

文章目录

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令,最终产生了哪些变更,将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…

STM32微秒级别延时--F407--TIM1

基本配置: TIM1挂载在APB2总线上,150MHz经过15分频,得到10MHz计数频率,由于disable了自动重装载,所以只需要看下一次计数值是多少即可。 void TIM1_Delay_us(uint16_t us) //使用阻塞方式进行延时,ARR值不…

Colibri for Mac v2.2.0激活版:专业级无损音乐播放器

Colibri for Mac是一款专为Mac用户设计的高分辨率无损音乐播放器。它基于BASS技术构建,为用户带来极致的音频体验。Colibri支持所有流行的无损和有损音频格式,如FLAC、MP3、AAC等,确保音乐播放的清晰度和完美度。其独特的清晰比特完美播放技术…

hadoop学习---基于Hive的教育平台数据仓库分析案例(一)

案例背景: 大数据技术的应用可以从海量的用户行为数据中进行挖掘分析,根据分析结果优化平台的服务质量,最终满足用户的需求。教育大数据分析平台项目就是将大数据技术应用于教育培训领域,为企业经营提供数据支撑。 案例数据产生流…

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统(华为技术有限公司开发的分布式操作系统) 华为鸿蒙系统(HUAWEI HarmonyOS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的分布式操作系统。 华为鸿蒙…

贪心-耍杂技的牛

问题描述 农民约翰的 N头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。 奶牛们不是非常有创意,只提出了一个杂技表演: 叠罗汉,表演时,奶牛们站在彼此的身上,形…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章:Django框架概述 1.1 什么是Django?…

音视频开发之旅——实现录音器、音频格式转换器和播放器(PCM文件转换为WAV文件、使用LAME编码MP3文件)(Android)

本文主要讲解的是实现录音器、音频转换器和播放器,在实现过程中需要把PCM文件转换为WAV文件,同时需要使用上一篇文章交叉编译出来的LAME库编码MP3文件。本文基于Android平台,示例代码如下所示: AndroidAudioDemo Android系列&am…

OpenAI下周将发布ChatGPT搜索引擎,挑战谷歌搜索!

目前,多方位消息证实,OpenAI将会在5月9日上午10点公布该消息,大约是北京时间周五的凌晨2点。 5月3日,前Mila研究员、麻省理工讲师Lior S爆料,根据OpenAI最新的SSL证书日志显示,已经创建了search.chatgpt.c…

数据库开发关键之与DQL查询语句有关的两个案例

案例 案例1 条件分页查询 查看项目经理提供给我们的需求文档 模糊匹配的含义是 只要包含"张"就可以 use dduo;-- 按照需求完成员工管理的条件分页查询 根据输入条件 查询第一页的数据 每页展示10条记录 -- 输入条件: -- 姓名: 张 -- 年龄&…

基于Java+SpringBoot+Vue前后端分离音乐播放器系统设计与实现(有视频讲解)

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

统一大型语言模型和知识图谱:路线图

【摘要】 大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图…

QQ音乐尽享海量高品质曲库,无广绿色版 PC端 v20.05.0

01 软件介绍 QQ音乐,作为一个在线音乐平台,它已经超越了传统音乐播放软件的界限,演变成为一个全面的音乐生态系统。该平台为用户提供了丰富的服务,包括无尽可能的音乐资源、定制化的个性推荐、卓越的高保真音乐体验和互动式的社交…

二叉树的迭代遍历 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历

二叉树的前序遍历(迭代法) 1、题目 题目链接:144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2&#x…

分布式锁之-redis

什么是分布式锁? 即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了…

NumPy库与PyTorch库的异同点

目录 1.单位的创建和操作 1.创建 2.形状变换 2.数学和统计操作 1.矩阵乘法 2.广播 3.统计计算 3.GPU支持 4.在深度学习中的作用 5.应用范围 NumPy库为数组服务,PyTorch库为张量服务,这是最本质的区别。 1.单位的创建和操作 1.创建 NumPy:使…

SQL注入-基础知识

目录 前言 一,SQL注入是什么 二,SQL注入产生的条件 三,学习环境介绍 四、SQL注入原理 五,SQL中常用的函数 六,关于Mysql数据库 前言 在网络安全领域中,sql注入是一个无法被忽视的关键点&#xff0c…

matlab例题大全

1.第一章 1.1 注:plot函数为画图函数。例plot(x1,y1,:,x2,y2,*); 1.2 注:root为求根函数。p为方程变量前面系数矩阵。 1.3 注: 2*x3y-1*z 2; 8*x2*y3*z 4; 45*x3*y9*z 23 求:x,y,z的值 注&#xf…

eNSP-浮动静态路由配置

ip route-static 192.168.1.0 24 192.168.3.2 preference 60 #设置路由 目标网络地址 和 下一跳地址 preference值越大 优先级越低 一、搭建拓扑结构 二、主机配置 pc1 pc2 三、配置路由器 1.AR1路由器配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接…

uniapp 微信开发工具上访问正常,真机调试一直跨域报错

微信小程序真机调试时&#xff0c;出现跨域问题&#xff0c;需要同时在后端设置多种允许跨域的设置&#xff1a; // 指定允许其他域名访问 header(Access-Control-Allow-Origin:*); // 响应类型 header(Access-Control-Allow-Methods:GET,POST,OPTION); // 响应头设置 header(…