Docker的运用
文章目录
- 一、 Docker介绍
- 二、Docker常用命令
- 三、Docker 部署微服务项目
- 四、Docker 使用场景
- 五、Docker模拟场景
- 5.1 模拟部署Nacos
- 5.2 模拟部署Mongodb
- 5.3 模拟部署RabbitMQ
一、 Docker介绍
Docker是一种开源软件平台,用于在不同的操作系统(如Windows、Linux等)之间隔离应用程序,以便更有效和可靠地管理这些应用程序的部署和运行。 Docker平台由三个基本概念组成:
-
镜像(Image):镜像是 Docker 包含应用所需的一切的文件系统和配置的静态表示。镜像是一个只读的模板,可以用来创建 Docker 容器。
-
容器(Container):容器是镜像的运行时实例。容器包含了一个应用程序及其依赖项,并且可以在任何 Docker 主机上运行。
-
仓库(Repository):仓库是存放镜像的地方,类似于代码仓库。Docker Hub是一个公共的仓库,用户可以从中获取各种镜像。
Docker平台的优势包括:
-
快速部署:Docker平台可以快速创建和部署应用程序,无需很长时间的安装和配置过程。
-
可靠性:Docker的容器隔离使应用程序更加可靠,因为它可以避免依赖项冲突和环境变化。
-
可移植性:由于 Docker 平台在各种操作系统上都能运行,因此应用程序可以更轻松地在不同的环境中迁移。
在应用程序开发中,Docker 可以在以下方面提供帮助:
-
开发环境一致性:开发人员可以使用 Docker 镜像构建开发环境,以确保团队成员之间具有一致的开发环境。
-
持续集成和部署:Docker 使得在 CI/CD 环境中更容易进行自动化部署和升级操作,帮助开发人员更加频繁地发布和测试新版本。
-
开发和生产环境一致性:使用 Docker 平台可以确保在开发和生产环境中使用完全相同的应用程序和配置,从而减少可能会导致生产环境故障的变量。
二、Docker常用命令
- docker run:运行一个容器
- docker ps:列出所有正在运行的容器
- docker images:列出所有镜像
- docker stop:停止一个或多个容器
- docker rm:删除一个或多个容器
- docker rmi:删除一个或多个镜像
- docker build:构建一个新的镜像
- docker exec:在正在运行的容器中执行命令
- docker inspect:查看容器或镜像的详细信息
- docker logs:查看容器的日志信息
- docker pull:下载一个镜像
- docker push:将本地的镜像推送到远程仓库
- docker-compose:使用docker-compose命令编排容器
- docker network:管理Docker网络
- docker volume:管理Docker卷
三、Docker 部署微服务项目
Docker 部署微服务项目需要以下步骤:
- 准备 Docker 镜像
首先需要将微服务应用程序打包成 Docker 镜像。可以使用 Dockerfile 文件定义 Docker 镜像的构建过程,然后使用命令 docker build
构建镜像。
- 部署 Docker 镜像
在 Docker 主机上部署 Docker 镜像,可以使用 Docker compose 工具来定义和管理多个 Docker 容器的生命周期。在 Docker Compose 文件中,定义每个组件(或微服务)所需的镜像、环境变量、网络配置等。
- 配置 Docker 网络
微服务应用程序在 Docker 中运行时,需要使用 Docker 网络来实现相互通信。可以创建自定义 Docker 网络来提供服务发现和负载均衡等功能。
- 监控和管理
使用 Docker 容器和镜像管理工具,如 Docker Swarm,Kubernetes 等来监控、管理、升级和扩展微服务应用程序。
总体来说,Docker 可以帮助简化微服务应用程序的部署、升级和扩展过程,提高应用程序的可靠性和可维护性。
四、Docker 使用场景
-
快速开发环境搭建:Docker 可以快速构建适合于不同语言、不同框架的开发环境,避免本地环境的差异性。
-
应用的打包和发布:将应用程序和其依赖项打包到一个 Docker 镜像中,然后在各种环境中进行部署,包括本地环境、云环境或者其他服务器。
-
微服务架构:Docker 可以在其容器中高效地运行各种服务,包括数据库、缓存、消息队列等,让整个架构变得更加模块化和可维护。
-
持续集成和持续部署:Docker 可以与 CI/CD 工具一起使用,提高应用程序的交付速度和质量。
-
多租户环境:Docker 可以在一个主机上运行多个容器,每个容器隔离运行,可以实现多租户的环境。
五、Docker模拟场景
5.1 模拟部署Nacos
Nacos是一个开源的,易于构建,易于使用的动态服务发现,配置管理和服务管理平台。Nacos使用了一系列的技术来实现它的功能,其中包括Spring Cloud Config,Eureka,Dubbo等。
在Docker中,我们可以使用Nacos来模拟部署,下面是具体的步骤:
- 安装Docker和Docker Compose
在使用Docker模拟部署Nacos之前,我们需要先安装Docker和Docker Compose。
- 下载Nacos的Docker镜像
使用以下命令从Docker Hub下载Nacos的Docker镜像:
docker pull nacos/nacos-server
- 创建Docker Compose文件
创建一个docker-compose.yaml文件,将以下内容复制到文件中。
version: '3.1'
services:nacos:image: nacos/nacos-servercontainer_name: nacosports:- "8848:8848"environment:- PREFER_HOST_MODE=hostnamevolumes:- "./data:/home/nacos/data"- "./logs:/home/nacos/logs"- "./init.d:/home/nacos/init.d"
其中,我们将Nacos映射到端口号为8848,并将数据和日志保存在本地的data和logs目录中。
- 启动Nacos
使用以下命令启动Nacos:
docker-compose up -d
- 访问Nacos
访问http://localhost:8848/nacos/,即可进入Nacos的控制台。
至此,我们已经成功地使用Docker模拟部署了Nacos。可以在控制台中进行服务的注册和发现等操作。
5.2 模拟部署Mongodb
要使用 Docker 模拟部署 Mongodb,可以按照以下步骤操作:
-
安装 Docker:在您的计算机上安装 Docker。
-
下载 Mongodb 镜像:使用以下命令从 Docker Hub 下载最新的 Mongodb 镜像。
docker pull mongo
- 运行 Mongodb 容器:使用以下命令运行 Mongodb 容器。
docker run -d -p 27017:27017 --name mymongodb mongo
注:-d 选项用于在后台运行容器,-p 选项将容器端口映射到主机端口,–name 选项为容器命名。
- 测试 Mongodb 容器:使用以下命令测试 Mongodb 容器是否正在运行。
docker ps
如果一切正常,您应该能够看到正在运行的容器。
- 连接 Mongodb 容器:使用以下命令连接到 Mongodb 容器。
docker exec -it mymongodb bash
- 运行 Mongodb shell:使用以下命令运行 Mongodb shell。
mongo
现在您可以在 Mongodb shell 中使用所有 Mongodb 命令来管理数据库。
- 退出 Mongodb shell:使用以下命令退出 Mongodb shell。
exit
- 停止 Mongodb 容器:使用以下命令停止 Mongodb 容器。
docker stop mymongodb
现在,您已经成功地使用 Docker 模拟部署了 Mongodb。
5.3 模拟部署RabbitMQ
在Docker中模拟部署RabbitMQ可以分为以下步骤:
- 下载RabbitMQ镜像
docker pull rabbitmq:management
- 运行RabbitMQ容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
-
访问RabbitMQ的web管理页面
在浏览器中输入http://localhost:15672
访问RabbitMQ的web管理页面,默认用户名和密码为guest/guest
。 -
配置RabbitMQ
我们可以在web管理页面中配置RabbitMQ,例如创建队列、交换机、绑定等等。 -
连接RabbitMQ
我们可以使用客户端代码连接RabbitMQ,例如使用Python的pika库连接RabbitMQ并发送和接收消息。
参考代码如下:
import pika# 连接RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 创建队列
channel.queue_declare(queue='hello')# 发送消息
channel.basic_publish(exchange='',routing_key='hello',body='Hello World!')
print(" [x] Sent 'Hello World!'")# 定义回调函数
def callback(ch, method, properties, body):print(" [x] Received %r" % body)# 接收消息
channel.basic_consume(queue='hello',on_message_callback=callback,auto_ack=True)print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
以上就是在Docker中模拟部署RabbitMQ的步骤。
盈若安好,便是晴天
相关文章:

Docker的运用
文章目录 一、 Docker介绍二、Docker常用命令三、Docker 部署微服务项目四、Docker 使用场景五、Docker模拟场景5.1 模拟部署Nacos5.2 模拟部署Mongodb5.3 模拟部署RabbitMQ 一、 Docker介绍 Docker是一种开源软件平台,用于在不同的操作系统(如Windows、…...

在项目中快速搭建机器学习的流程
在软件开发领域,机器学习框架发挥着关键作用,为开发人员提供强大的人工智能工具、库和算法,以有效地利用机器学习的潜力。从本质上讲,机器学习使计算机能够从数据中学习并做出预测或决策,而无需明确编程。 机器学习框…...

计网-All
路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客路由基础-直连路由、静态路由与动态路由的概念_MikeVane-bb的博客-CSDN博客路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客 直连路由就是路由器直接连了一个网段,他就…...

Rabbitmq的Federation Exchange
(broker 北京 ) , (broker 深圳 ) 彼此之间相距甚远,网络延迟是一个不得不面对的问题。有一个在北京的业务(Client 北京 ) 需要连接 (broker 北京 ) ,向其中的交换器 exchangeA 发送消息,此时的网络延迟很小,(C…...

AIGC - 生成模型
AIGC - 生成模型 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 (Generat…...

如何优雅地创建一个自定义的Spring Boot Starter
优雅永不过时,希望看完本文,你会觉得starter如此优雅! Spring Boot Starter是一种简化Spring Boot应用开发的机制,它可以通过引入一些预定义的依赖和配置,让我们快速地集成某些功能模块,而无需繁琐地编写代…...

Hbase--技术文档--单机docker基础安装(非高可用)
环境准备-docker 配置Linux服务器华为云耀云服务器之docker安装,以及环境变量安装 java (虚拟机一样适用)_docker配置java环境变量_一单成的博客-CSDN博客 说明: 本文章安装方式为学习使用的单体hbase项目。主要是学习ÿ…...

React 生命周期新旧对比
前言 React16.4版本之后使用了新的生命周期,它使用了一些新的生命周期钩子(getDerivedStateFromProps、getSnapshotBeforeUpdate),并且即将废弃老版的3个生命周期钩子(componentWillMount、componentWillReceiveProps…...

云计算存储类型
一、共享存储模式 NAS: ①一种专门用于存储和共享文件的设备,它通过网络连接到计算机或其他设备, 提供了一个中心化的存储解决方案 ②存储网络使用IP网络 ,数据存储共享基于文件 ③本质上为:NFS和CIFS文件共享服务器 ④提供的不是一个磁盘块…...

javacv基础03-调用本机摄像头并截图保存到本地磁盘
基于基础02 的基础上对视频进行取帧保存 代码如下: package com.example.javacvstudy;/*** 本地摄像头截图*/import org.bytedeco.javacv.CanvasFrame; import org.bytedeco.javacv.FrameGrabber; import org.bytedeco.javacv.OpenCVFrameConverter; import org.b…...

Python读取Windows注册表的实战代码
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

macOS 安装 Homebrew 详细过程
文章目录 macOS 安装 Homebrew 详细过程Homebrew 简介Homebrew 安装过程设置环境变量安装 Homebrew安装完成后续设置(重要)设置环境变量homebrew 镜像源设置macOS 安装 Homebrew 详细过程 本文讲解了如何使用中科大源安装 Homebrew 的安装过程,文章里面的所有步骤都是必要的,需…...

数据结构之树型结构
相关概念树的表示二叉树二叉树性质二叉树储存 实现一颗二叉树创建遍历(前中后序)获取树中节点个数获取叶子节点个数获取第k层节点个数获取二叉树高度检测值为value元素是否存在层序遍历(需要队列来实现)判断是否为完全二叉树&…...

指针进阶详解
个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.字符指针 2.指针数组 3.数组指针 4.数组传…...

QGIS 如何添加天地图
相信很多小伙伴在 QGIS 里面添加天地图的时候一定感觉很困惑,按照官网的操作申请 Key 之后,添加相对应的服务地址之后看不到地图或者地图不正常显示,今天我们就来解决这个问题 以下所有操作基于 QGIS 3.22 版本 申请 Key 1. 添加天地图的第一步需要申请 Key,首先要注册天…...

PHP8内置函数中的数学函数-PHP8知识详解
php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…...

云计算企业私有云平台建设方案PPT
导读:原文《云计算企业私有云平台建设方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以点赞评论转发本文,…...

ORA-01174: DB_FILES be compatible RAC rolling fashion complete outage
How to change the DB_FILES parameter in RAC (Doc ID 1636681.1)编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.1.0.2 and later Oracle Database Cloud Schema Service - Version N/A and later Oracle…...

线性代数(五) 线性空间
前言 《线性代数(三) 线性方程组&向量空间》我通过解线性方程组的方式去理解线性空间。此章从另一个角度去理解 空间是什么 大家较熟悉的:平面直角坐标系是最常见的二维空间 空间由无穷多个坐标点组成 每个坐标点就是一个向量 反过来,也可说&…...

kafka--技术文档--spring-boot集成基础简单使用
阿丹: 查阅了很多资料了解到,使用了spring-boot中整合的kafka的使用是被封装好的。也就是说这些使用其实和在linux中的使用kafka代码的使用其实没有太大关系。但是逻辑是一样的。这点要注意! 使用spring-boot整合kafka 1、导入依赖 核心配…...

【核磁共振成像】部分傅里叶重建
目录 一、部分傅里叶重建二、部分傅里叶重建算法2.1 填零2.2 零差处理 一、部分傅里叶重建 在部分傅里叶采集中,数据并不是绕K空间中心对称收集的,而是K空间的一半是完全填充的,另一半只收集了一小部分数据。 部分傅里叶采集所依据的原理…...

React中的flushSync与Vue中的nextTick的比较
React中的flushSync与Vue中的nextTick是两种用于处理异步更新的机制。它们在React和Vue这两个流行的前端框架中起着重要的作用。 首先,让我们来看看flushSync。在React中,当需要更新UI时,React会将更新操作放入一个队列中,然后异…...

golang设置国内镜像源
以windows为例, 在cmd 窗口中执行下列语句 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.io,direct 或者 1.运行 go env -w GO111MODULEon //开启mod 运行 go env -w GOPROXYhttps://goproxy.cn,direct //设置代理 执…...

linux切换到root没有conda环境
这个错是因为 没有将anaconda添加到环境变量 export PATH"/home/tao/anaconda3/bin:$PATH"然后 source ~/.bashrc或者写入 nano ~/.bashrc在文件的末尾添加以下行 export PATH"/home/tao/anaconda3/bin:$PATH"再 source ~/.bashrc就可以了...

数据库——redis介绍
文章目录 redis是什么?分布式缓存常见的技术选型方案有哪些?说一下 Redis 和 Memcached 的区别和共同点? redis是什么? 简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在…...

从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
目录 1. 可变参数模板 1.1 展开参数包 1.1.1 递归函数方式展开 1.1.2 逗号表达式展开 1.2 emplace相关接口 2. lambda表达式(匿名函数) 2.1 C11之前函数的缺陷 2.2 lambda表达式语法 2.3 函数对象与lambda表达式 3. 包装器 3.1 function包装器…...

喜报|星瑞格荣获“2022-2023年度国产数据库应用优秀解决方案”奖项
近日,赛迪网为表彰数字赛道上的先行者,联合《数字经济》杂志社和北京科创互联,共同组织以“树立行业标杆,引领服务创新”为中心的“2022-2023年度产业数字服务案例及创新成果征集活动”。该活动旨在鼓励各行业数字化应用技术创新树…...

【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式
【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式 文章目录 【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式一、概述二、什么是幂等性三、幂等性需关注几个重点四、幂等性有什么用五、常见用来保证幂等的手段5.1 MVCC方案5.2 去重表5.3 去重表5.4 select in…...

2023.8.26-2023.9.3 周报【3D+GAN+Diffusion基础知识+训练测试】
目录 学习目标 学习内容 学习时间 学习产出 学习目标 1. 3D方向的基础知识 2. 图像生成的基础知识(GAN \ Diffusion) 3. 训练测试GAN和Diffusion 学习内容 1. 斯坦福cv课程-3D (网课含PPT) 2. sjtu生成模型课件 3. ge…...

如何使用CSS创建渐变阴影?
随着网络的不断发展,制作漂亮的 UI 是提高客户在网站上的参与度的最重要的工作之一。改善前端外观的方法之一是在 CSS 中应用渐变阴影。应用渐变阴影的两种最重要的方法是线性渐变和径向渐变。 渐变阴影可用于吸引用户对特定信息的注意力,应用悬停或焦点…...