docker内容整理

docker内容整理

docker的安装

  1. 检查之前是否安装过docker,如果有使用yum remove docker卸载

    [root@woniu ~]# yum remove docker \
    > docker-client \
    > docker-client-latest \
    > docker-common \
    > docker-latest \
    > docker-latest-logrotate \
    > docker-logrotate \
    > docker-engine
    
  2. 安装yum工具

    [root@woniu ~]# yum -y install yum-utils
    
  3. 配置阿里云镜像,添加docker引擎的yum源

    [root@woniu ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  4. 更新CentOS

    [root@woniu ~]# yum update
    
  5. 列出docker源

    [root@woniu ~]# yum list docker-ce —showduplicates | sort -r
    
  6. 安装docker

    [root@woniu ~]# yum list docker-ce —showduplicates | sort -r
    
  7. 检查docker版本号

    [root@woniu ~]# docker -v
    Docker version 24.0.7, build afdd53b
    
  8. 启动docker,并设置自启

    [root@woniu ~]# systemctl start docker
    [root@woniu ~]# systemctl enable docker
    
  9. 配置本地镜像库

    从默认网络获取docker镜像太慢,为了提高速度,可以配置国内的镜像库,可同时配置多个

    [root@woniu ~]# vim /etc/docker/daemon.json
    
    {
            "registry-mirrors":[
                    "https://ung2thfc.mirror.aliyuncs.com",
                    "https://docker.mirrors.ustc.edu.cn",
                    "https://registry.docker-cn.com",
                    "http://hub-mirror.c.163.com",
                    "https://mirror.ccs.tencentyun.com"
            ]
    }
    

    配置完成之后重启docker

    [root@woniu ~]# systemctl restart docker
    
  10. 设置docker的静态ip
    目的:解决docker运行过程中ip的固定。
    docker容器的ip地址在每次启动后启动顺序设置ip地址,为解决ip地址变动的问题,我们有必要设置docker内部ip地址固定。

  11. 创建自定义网络(network)
    docker network create —driver bridge —subnet=自定义网络ip/16 —gateway=网关值 自定义网络名称

    [root@woniu ~]# docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 wn_docker_net
    

    查看创建的网络

    [root@woniu ~]# docker network ls
    NETWORK ID     NAME                      DRIVER    SCOPE
    70fe2b91dc9a   bridge                    bridge    local
    dc8dac7cdeb4   host                      host      local
    ab24c1a95ddc   none                      null      local
    88dee123076b   ssc-replication_default   bridge    local
    b948a39c4ea9   test_default              bridge    local
    4bb015285e05   wn_docker_net             bridge    local
    
    [root@woniu ~]# docker inspect wn_docker_net
    [
        {
            "Name": "wn_docker_net",
            "Id": "4bb015285e05f57ab4b59e30f2eb9c0b76818c850680a3910aca6201aac9bdaa",
            "Created": "2023-09-25T15:33:43.398740767+08:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "172.18.12.0/16",
                        "Gateway": "172.18.1.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    
  12. docker常见问题IPv4 forwarding disabled的解决方案
    docker run创建运行容器可能出现警告WARNING: IPv4 forwarding is disabled. Networking will not work.解决方案为开启路由转发功能,方式如下

    [root@woniu ~]# vim /etc/sysctl.conf
    

    在末尾追加net.ipv4.ip_forward=1,保存退出(:wq)

    查看是否修改成功

    [root@woniu ~]# sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1
    

    重启network和docker服务

    [root@woniu ~]# systemctl restart network
    [root@woniu ~]# systemctl restart docker
    

docker常用命令及参数

  1. 容器管理:

    • docker run: 创建、运行一个新的容器

      • -d: 以守护进程(后台)模式运行容器
      • -it: 分配一个交互式的终端
      • –name: 指定容器的名称
      • -p: 端口映射
      • –network:指定容器连接的网络。比如指定为我们之前自定义的网络–network wn_docker_net
      • –ip:指定容器内部ip,配合–network使用,如–ip 172.18.12.2
      • -v:用于挂载数据卷,如-v /usr/local/softwares/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf,冒号左边的是外面宿主机的文件路径,冒号右边的是容器内的文件路径,这样我们可以修改外面的文件,容器内部的文件会被自动修改,非常方便
      • -e:用于设置环境变量
      • –restart:设置容器的重启策略。可以使用该参数来指定容器在退出时的重启策略,如 --restart=always 表示容器退出时总是重启。能够使我们在启动docker时,自动启动docker内的各种容器。
      • –rm:容器退出时自动删除。使用该参数可以在容器退出后自动删除容器,适用于临时性任务的容器。
    • docker start: 启动已经停止的容器

    • docker stop: 停止正在运行的容器

    • docker restart: 重启容器

    • docker rm: 删除容器

    • docker ps: 查看正在运行的容器

    • docker ps -a: 查看所有容器(包括已停止的)

    • docker logs: 查看容器的日志,如果在配置文件设置了自定义的日志路径则失效,此时应该把日志挂载到外面查看

  2. 镜像管理:

    • docker pull: 下载镜像

    • docker build: 构建镜像

    • docker push: 推送镜像到仓库

    • docker images: 查看本地的镜像列表

    • docker rmi: 删除镜像

  3. 网络管理:

    docker network ls: 列出 Docker 网络

    • docker network create: 创建一个新的 Docker 网络
    • docker network connect: 将容器连接到网络
    • docker network disconnect: 将容器从网络断开
  4. 仓库管理:

    • docker login: 登录到 Docker 仓库

    • docker logout: 退出 Docker 仓库

    • docker search: 在 Docker 仓库中搜索镜像

  5. 其他常用命令:

    • docker exec: 在运行的容器中执行命令,一般使用docker exec -it 容器名 bash进入容器内部

    • docker info: 显示 Docker 系统信息

    • docker version: 显示 Docker 版本信息

    • docker-compose: 使用 Docker Compose 来定义和运行多个容器的应用程序

    • docker inspect:用于获取有关 Docker 对象(如容器、镜像、网络等)的详细信息,可以配合管道|grep "x"进行过滤输出结果搜索包含x的指定行

以上是常用命令别的可以通过docker --help/-h或者 docker [command] --help来查看

mysql

相关链接:

Linux docker搭建mysql主从数据库

配置主从

主从配置原理:

MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件 binary log events,可以通过 show binlog events 进行查看);
MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
MySQL slave 重做 relay log 中事件,将数据变更反映它自己的数据;

canal

描述:

canal 翻译为渠道,主要用途是基于 MySQL 数据库的增量日志 Binlog 解析,提供增量数据订阅和消费。

基于日志增量订阅和消费的业务包括:

数据库镜像;
数据库实时备份;
索引构建和实时维护(拆分异构索引、倒排索引等);
业务 cache 刷新;
带业务逻辑的增量数据处理;
工作原理:

canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议;
MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal );
canal 解析 binary log 对象(原始为 byte 流);

maven私服

相关链接:

搭建maven私服

nexus配置maven私服
描述:

使用Nexus搭建私服有很多好处,其中最主要的原因是可以控制构件的访问和部署。如果没有Nexus私服,我们所需的所有构件都需要通过Maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从Maven仓库下载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。而使用Nexus搭建私服后,只需要在私服上进行一次下载,就可以在整个团队中使用,大大提高了效率 。

此外,Nexus还具有很多其他优点,例如占用内存小、具有基于ExtJs得操作界面、使用基于Restlet的完全REST API支持代理仓库、宿主仓库和仓库组、基于文件系统,不需要依赖数据库、支持仓库管理、支持构件搜索、支持在界面上上传构件等等 。

redis

redis主从

主从复制的作用

读写分离:主节点写,从节点读,提高服务器的读写负载能力
数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复︰当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复 ; 实际上是一种服务的冗余。
负载均衡︰在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载 ; 尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用(集群)基石︰除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

相关链接:

https://blog.csdn.net/m0_72075879/article/details/134771328

redis哨兵

哨兵的作用

在主从模式下,主从复制机制使得slave成为与master完全一致的副本,一旦master宕机,我们可以选择一个正常的slave成为新的主节点,实现手动的故障恢复。

哨兵专注于对Redis实例(主节点、从节点)运行状态的监控,并能够在主节点发生故障时通过一系列的机制实现选主及主从切换,实现故障转移,确保整个Redis系统的可用性。

相关链接:

https://blog.csdn.net/m0_72075879/article/details/134771328

插件

bloomfilter(布隆过滤器)

布隆过滤器(Bloom Filter)是一种用于快速检查一个元素是否属于一个集合的概率型数据结构。它通过使用多个哈希函数和一个位数组来实现。

redis-cell

使用redis-cell实现令牌桶限流

redis-cell 是一个 Redis 模块,它提供了一个基于 Redis 的实时限流器(Rate Limiter)。这个模块的主要目的是让你能够限制在一定时间内请求某个资源的频率,以防止滥用或过度使用。redis-cell 模块可以用于 Web 应用、API、或其他需要控制访问速率的场景。

相关链接:

https://blog.csdn.net/m0_72075879/article/details/134770632

rabbitmq

相关链接:https://blog.csdn.net/m0_72075879/article/details/134769833

消息队列的作用:消峰、解耦、异步

延迟队列:
延迟队列是一种特殊的队列,用于延迟消息的投递。在RabbitMQ中,延迟队列不是一个内置的功能,但可以通过插件(如rabbitmq-delayed-message-exchange)或者使用TTL(Time-To-Live)和死信交换机(DLX)的组合来实现。当消息发送到延迟队列时,它不会立即被消费者接收,而是在队列中等待一定的时间(延迟时间),时间到了之后,消息才会被发送到另一个队列,然后被消费者处理。

应用场景
定时任务:可以将需要在未来某个时间点执行的任务放入延迟队列,当时间到达时,任务被发送到正常队列并执行。
消息重试:在处理消息时,如果遇到暂时性的错误(如网络问题或服务不可用),可以将消息重新发送到延迟队列,等待一段时间后再次尝试处理。
订单超时处理:例如,电商平台中未支付订单的超时关闭,可以在订单创建时发送一个延迟消息,如果用户在规定时间内未支付,消息到期后触发订单关闭流程。
提醒通知:比如预约提醒、会议开始前的通知等,可以在预定时间前将提醒消息发送到延迟队列,到时间后自动通知用户。
死信队列:
死信队列用于存放无法正常投递的消息,这些消息可能因为以下几种情况被投递到死信队列:

消息被拒绝(basic.reject 或 basic.nack)并且设置了requeue参数为false。
消息过期(TTL过期)。
队列达到最大长度。
在RabbitMQ中,可以通过设置队列的x-dead-letter-exchange和x-dead-letter-routing-key参数来指定死信交换机和路由键,从而将死信消息重定向到特定的死信队列。

应用场景
消息审计和排错:当消息无法被正常消费时,将其发送到死信队列,开发人员可以从死信队列中检查和分析这些消息,找出问题原因。
消息保护:避免因为消费者的错误处理导致消息丢失,通过死信队列可以保留这些消息,进行后续的处理。
流量削峰:当系统处理能力达到上限时,可以将超出能力的消息暂时存放在死信队列中,等系统负载降低后再进行处理。
消息重试策略:结合延迟队列,可以实现消息的延迟重试机制。当消息处理失败后,先发送到死信队列,然后再根据需要将其发送到延迟队列等待重试。
延迟队列和死信队列可以单独使用,也可以结合起来使用,以满足复杂的业务需求。例如,可以将消息从延迟队列发送到正常队列,如果消费失败,则进入死信队列,之后可以从死信队列中取出消息进行分析或者再次发送到延迟队列进行重试。

nginx

相关链接:

docker搭建nginx实现负载均衡

gitlab

相关链接:

Docker 部署 GitLab-CSDN博客

Dockerfile

简介

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

常用指令

  • FROM:指定基础镜像
  • MAINTAINER:指定维护者信息
  • ADD:复制文件
  • ENTRYPOINT:入口点
  • EXPOSE:指定暴露出去的端口号
  • VOLUME:指定挂载点

相关链接:

springboot整合Dockerfile-CSDN博客

docker-compose

简介

docker compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止。简单来说,它可以帮你一次性同时创建并启动多个docker容器。

下载(https://github.com/docker/compose/releases?page=3)

image-20231203221502754

下载完成后上传到虚拟机里的/usr/local/bin/目录下,放到这个目录下可以全局使用,对它添加可执行权限,修改名字简化使用

[root@woniu abc]# cd /usr/local/bin
[root@woniu bin]# chmod u+x docker-compose-linux-x86_64
[root@woniu bin]# mv docker-compose-linux-x86_64 docker-compose

查看版本

[root@woniu ~]# docker-compose --version
Docker Compose version v2.14.2

简单使用

通过使用命令docker-compose up就可以按照当前目录下docker-compose.yml的配置内容进行构建

image-20231203190431316

创建一个空文件夹

再创建一个docker-compose.yml文件,编辑里面的内容

version: '2'
networks:
  wn_docker_net:
    external: true
services:
  replication-01:
    build: .
    image: ssc-replication
    ports:
      - "12006:12006"
    container_name: ssc-appointment_01
    networks:
      wn_docker_net:
        ipv4_address: 172.18.12.110
  replication-02:
    build: .
    image: ssc-replication
    ports:
      - "12007:12006"
    container_name: ssc-appointment_02
    networks:
      wn_docker_net:
        ipv4_address: 172.18.12.111

build: .指的是会在当前目录下找一个Dockerfile文件来构建镜像,这个就和之前docker run配合参数构建运行容器一样,只不过可以一次性构建多个,之后可以配合Dockerfile来构建分布式项目。

[root@woniu test]# docker-compose up
[+] Running 2/2
 ⠿ Container mysql_3320  Created                                                    0.1s
 ⠿ Container redis_6399  Created                                                    0.1s
Attaching to mysql_3320, redis_6399
mysql_3306  | 2023-12-03 22:14:26+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.1.0-1.el8 started.
redis_6379  | 1:C 03 Dec 2023 22:14:26.959 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
...

Ctrl+C终止

^CGracefully stopping... (press Ctrl+C again to force)
[+] Running 2/2
 ⠿ Container mysql_3306  Stopped                                                    1.8s
 ⠿ Container redis_6379  Stopped                                                    0.3s
canceled

Spring Boot整合docker compose

编写Dockerfile

image-20231203222425881

image-20231203222442769

创建镜像

image-20231203222511467

编写docker-compose.yml

image-20231203222541886

点击运行

image-20231203222613266

若出现

Failed to deploy ‘Compose: docker-compose.yml’: 
com.intellij.execution.process.ProcessNotCreatedException: Cannot run
program “docker-compose” (in directory “d:\develop\test”): CreateProcess 
error=2, 
系统找不到指定的文件。

则需要下载Docker Desktop

然后指定文件目录
image-20231203222937764

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

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

相关文章

Android12之MediaCodec硬编解码调试手段(四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

Java多线程技术二:线程间通信——join()方法的使用

1 概述 在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束,这时如果主线程想等待子线程执行完成后再结束,例如子线程处理一个数据,主线程要取到这个数据中…

如何入驻抖音本地生活服务商,门槛太高怎么办?

随着抖音本地生活服务市场的逐渐成熟,越来越多平台开始涉及本地生活服务领域,而本地生活服务商成了一个香窝窝,为了保护用户权益和平台生态,对入驻入驻抖音本地生活服务商的条件及审核也越来越严格,这让很多想成为抖音…

Mysql的索引详解

1.索引的分类 1.按照功能来分,可以分为主键索引、唯一索引、普通索引、全文索引 2.按照索引字段个数来分,可以分为单列索引、联合索引 3.按照物理实现方式来分,可以聚簇索引、非聚簇索引 2.适合添加索引的场景 1.具有唯一性约束的字段。 2…

Matlab论文插图绘制模板第129期—函数网格曲面图

在之前的文章中,分享了Matlab函数折线图的绘制模板: 函数三维折线图: 进一步,再来分享一下函数网格曲面图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自…

直击2023云栖大会-大模型时代到来:“计算,为了无法计算的价值”

2023年的云栖大会以“计算,为了无法计算的价值”为主题,强调了计算技术在现代社会中的重要性,特别是在大模型时代到来的背景下。 大模型时代指的是以深度学习为代表的人工智能技术的快速发展,这些技术需要大量的计算资源来训练和优…

算法设计与实现--动态规划篇

什么是动态规划算法 动态规划算法是一种求解复杂问题的方法,通过将原问题分解为相对简单的子问题来求解。其基本思想是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子…

uniapp:如何使用uCharts

目录 第一章 前言 第二章 安装插件uCharts 第三章 使用uCharts 第四章 注意 第一章 前言 需求:这是很久之前的一个项目的需求了,当时我刚接触app,有这么一个需求,在uniapp写的app项目中做一些图表统计,最开始以为…

设备巡检的内容有哪些?巡检注意事项及巡检要点?

本文将为大家讲解:设备巡检的内容有哪些?巡检注意事项及巡检要点? 每个制造型企业都有成百上千的设备需要定期的巡检。在生产制造加工类企业中,设备的巡检、维修及保养工作是保障生产安全和效率的重要内容之一。过去因为问题设备漏…

【零基础入门Python】Python If Else流程控制

✍面向读者:所有人 ✍所属专栏:零基础入门Pythonhttps://blog.csdn.net/arthas777/category_12455877.html Python if语句 Python if语句的流程图 Python if语句示例 Python If-Else Statement Python if else语句的流程图 使用Python if-else语句 …

MDK ARM环境下的伪指令的测试

目录 测试目标: 测试代码: 1. start.s 2. align.s 测试结果: 1 .ldr伪指令的测试结果: 2 .align伪操作测试结果: 结果分析: 测试目标: 熟悉ARM处理器的伪指令,本次实验主要来练习ldr伪指令和align…

Python代码部署的三种加密方案,其中一种你肯定不知道

文章目录 前言一、代码混淆二、代码打包三、代码编译3.1 pyarmor快速使用3.2 pyarmor进阶使用关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、…

Docker Image(镜像)——5

目录: Docker 镜像是什么镜像生活案例镜像分层生活案例为什么需要镜像镜像命令详解 镜像命令清单docker imagesdocker tagdocker pulldocker pushdocker rmidocker savedocker loaddocker historydocker importdocker image prunedocker build镜像操作案例 查找镜像…

02_W5500网络初始化

如何与W5500通信? 我们在W5500介绍中可以看到W5500支持SPI通信协议,如果对SPI通信协议还不太了解,请转 SPI数据帧: W5500 的 SPI 数据帧包括了 16 位地址段的偏移地址, 8 位控制段和 N 字节数据段。 如图所示…

10分钟带你学会python模块和包的使用

如果你用过 Python,那么你一定用过 import 关键字加载过各式各样的模块。但你是否熟悉 Python 中的模块与包的概念呢?或者,以下几个问题,你是否有明确的答案? 什么是模块?什么又是包?from matp…

Educational Codeforces Round 159 (Rated for Div. 2)(A~E)

A - Binary Imbalance 题意:给定一个01串,你能够在相邻相同字符中插入‘1’,在相邻不同字符中插入‘0’,求最终能否使得0的数量严格大于1的数量。 思路:可以发现,当出现了‘01’或者‘10’子序列时,能够无…

分享74个节日PPT,总有一款适合您

分享74个节日PPT,总有一款适合您 74个节日PPT下载链接:https://pan.baidu.com/s/18YHKkyJsplx-Gjj7ofpFrg?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

机器学习---环境准备

一、pySpark环境准备 1、window配置python环境变量 window安装python,配置python环境变量。安装python后,在环境变量path中加入安装的路径,cmd中输入python,检验python是否安装成功。 注意:如果使用的是anaconda安装的python环境…

【滑动窗口】长度最小的数组

长度最小的数组 长度最小的数组 文章目录 长度最小的数组题目描述解法暴力解法滑动窗口Java示例代码c示例代码 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, num…

若依微服务项目整合rocketMq

原文链接:ttps://mp.weixin.qq.com/s/IYdo_suKvvReqCiEKjCeHw 第一步下载若依项目 第二步安装rocketMq(推荐在linux使用docker部署比较快) 第二步新建一个生产者模块儿,再建一个消费者模块 第四步在getway模块中配置接口映射规…