Docker的运用

简介: Docker的运用

一、 Docker介绍

Docker是一种开源软件平台,用于在不同的操作系统(如Windows、Linux等)之间隔离应用程序,以便更有效和可靠地管理这些应用程序的部署和运行。 Docker平台由三个基本概念组成:

  1. 镜像(Image):镜像是 Docker 包含应用所需的一切的文件系统和配置的静态表示。镜像是一个只读的模板,可以用来创建 Docker 容器。
  2. 容器(Container):容器是镜像的运行时实例。容器包含了一个应用程序及其依赖项,并且可以在任何 Docker 主机上运行。
  3. 仓库(Repository):仓库是存放镜像的地方,类似于代码仓库。Docker Hub是一个公共的仓库,用户可以从中获取各种镜像。

Docker平台的优势包括:

  1. 快速部署:Docker平台可以快速创建和部署应用程序,无需很长时间的安装和配置过程。
  2. 可靠性:Docker的容器隔离使应用程序更加可靠,因为它可以避免依赖项冲突和环境变化。
  3. 可移植性:由于 Docker 平台在各种操作系统上都能运行,因此应用程序可以更轻松地在不同的环境中迁移。

在应用程序开发中,Docker 可以在以下方面提供帮助:

  1. 开发环境一致性:开发人员可以使用 Docker 镜像构建开发环境,以确保团队成员之间具有一致的开发环境。
  2. 持续集成和部署:Docker 使得在 CI/CD 环境中更容易进行自动化部署和升级操作,帮助开发人员更加频繁地发布和测试新版本。
  3. 开发和生产环境一致性:使用 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 部署微服务项目需要以下步骤:

  1. 准备 Docker 镜像

首先需要将微服务应用程序打包成 Docker镜像。可以使用 Dockerfile 文件定义 Docker 镜像的构建过程,然后使用命令 docker build 构建镜像。

  1. 部署 Docker 镜像

在 Docker 主机上部署 Docker 镜像,可以使用 Docker compose 工具来定义和管理多个 Docker 容器的生命周期。在 Docker Compose 文件中,定义每个组件(或微服务)所需的镜像、环境变量、网络配置等。

  1. 配置 Docker 网络

微服务应用程序在 Docker 中运行时,需要使用 Docker 网络来实现相互通信。可以创建自定义 Docker 网络来提供服务发现和负载均衡等功能。

  1. 监控和管理

使用 Docker 容器和镜像管理工具,如 Docker Swarm,Kubernetes 等来监控、管理、升级和扩展微服务应用程序。

总体来说,Docker 可以帮助简化微服务应用程序的部署、升级和扩展过程,提高应用程序的可靠性和可维护性。

四、Docker 使用场景

  1. 快速开发环境搭建:Docker 可以快速构建适合于不同语言、不同框架的开发环境,避免本地环境的差异性。
  2. 应用的打包和发布:将应用程序和其依赖项打包到一个 Docker 镜像中,然后在各种环境中进行部署,包括本地环境、云环境或者其他服务器。
  3. 微服务架构:Docker 可以在其容器中高效地运行各种服务,包括数据库、缓存、消息队列等,让整个架构变得更加模块化和可维护。
  4. 持续集成和持续部署:Docker 可以与  CI/CD 工具一起使用,提高应用程序的交付速度和质量。
  1. 多租户环境:Docker 可以在一个主机上运行多个容器,每个容器隔离运行,可以实现多租户的环境。

五、Docker模拟场景

5.1 模拟部署Nacos

Nacos是一个开源的,易于构建,易于使用的动态服务发现,配置管理和服务管理平台。Nacos使用了一系列的技术来实现它的功能,其中包括Spring Cloud Config,Eureka,Dubbo等。

在Docker中,我们可以使用Nacos来模拟部署,下面是具体的步骤:

  1. 安装Docker和Docker Compose

在使用Docker模拟部署Nacos之前,我们需要先安装Docker和Docker Compose。

  1. 下载Nacos的Docker镜像

使用以下命令从Docker Hub下载Nacos的Docker镜像:

docker pull nacos/nacos-server
  1. 创建Docker Compose文件

创建一个docker-compose.yaml文件,将以下内容复制到文件中。

version: '3.1'
services:
  nacos:
    image: nacos/nacos-server
    container_name: nacos
    ports:
      - "8848:8848"
    environment:
      - PREFER_HOST_MODE=hostname
    volumes:
      - "./data:/home/nacos/data"
      - "./logs:/home/nacos/logs"
      - "./init.d:/home/nacos/init.d"

其中,我们将Nacos映射到端口号为8848,并将数据和日志保存在本地的data和logs目录中。

  1. 启动Nacos

使用以下命令启动Nacos:

docker-compose up -d
  1. 访问Nacos

访问http://localhost:8848/nacos/,即可进入Nacos的控制台。

至此,我们已经成功地使用Docker模拟部署了Nacos。可以在控制台中进行服务的注册和发现等操作。

5.2 模拟部署Mongodb

要使用 Docker 模拟部署 Mongodb,可以按照以下步骤操作:

  1. 安装 Docker:在您的计算机上安装 Docker。
  2. 下载 Mongodb 镜像:使用以下命令从 Docker Hub 下载最新的 Mongodb 镜像。
docker pull mongo
  1. 运行 Mongodb 容器:使用以下命令运行 Mongodb 容器。
docker run -d -p 27017:27017 --name mymongodb mongo

注:-d 选项用于在后台运行容器,-p 选项将容器端口映射到主机端口,–name 选项为容器命名。

  1. 测试 Mongodb 容器:使用以下命令测试 Mongodb 容器是否正在运行。
docker ps

如果一切正常,您应该能够看到正在运行的容器。

  1. 连接 Mongodb 容器:使用以下命令连接到 Mongodb 容器。
docker exec -it mymongodb bash
  1. 运行 Mongodb shell:使用以下命令运行 Mongodb shell。
mongo

现在您可以在 Mongodb shell 中使用所有 Mongodb 命令来管理数据库。

  1. 退出 Mongodb shell:使用以下命令退出 Mongodb shell。
exit
  1. 停止 Mongodb 容器:使用以下命令停止 Mongodb  容器。
docker stop mymongodb

现在,您已经成功地使用 Docker 模拟部署了 Mongodb。

5.3 模拟部署RabbitMQ

在Docker中模拟部署RabbitMQ可以分为以下步骤:

  1. 下载RabbitMQ镜像
docker pull rabbitmq:management
  1. 运行RabbitMQ容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
  1. 访问RabbitMQ的web管理页面
    在浏览器中输入 http://localhost:15672 访问RabbitMQ的web管理页面,默认用户名和密码为 guest/guest
  2. 配置RabbitMQ
    我们可以在web管理页面中配置RabbitMQ,例如创建队列、交换机、绑定等等。
  1. 连接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的步骤。

盈若安好,便是晴天

目录
相关文章
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:5.本地镜像发布到阿里云》
《docker基础篇:5.本地镜像发布到阿里云》
1286 79
|
缓存 关系型数据库 MySQL
服务器磁盘爆满?别慌,教你轻松清理!
服务器磁盘空间告急?别慌!本文将教你如何快速识别并清理占用大量磁盘空间的文件和目录,优化日志文件,释放磁盘空间,恢复系统正常运行。适合服务器管理员和网站运营者。
2331 0
 服务器磁盘爆满?别慌,教你轻松清理!
|
Linux 网络安全
在Linux中,要想把iptable的规则保存到一个文件中如何做?如何恢复?
在Linux中,要想把iptable的规则保存到一个文件中如何做?如何恢复?
|
5月前
|
存储 机器学习/深度学习 人工智能
AI Agent 记忆机制详解:是什么、为什么、怎么用
AI Agent的记忆系统是突破“上下文腐烂”的核心:通过分层架构(短期/长期/元记忆)实现跨会话连续性、自我反思与长期目标追踪;融合向量检索、知识图谱与摘要压缩等技术,兼顾效率与语义深度;兼顾伦理合规,让AI从工具进化为可信伙伴。(239字)
1670 1
|
人工智能 自然语言处理 PyTorch
InspireMusic:阿里通义实验室开源的音乐生成模型,支持文本或音频生成多种风格的音乐
阿里通义实验室开源的音乐生成技术,支持通过简单描述快速生成多种风格的高质量音乐作品。
3032 4
|
存储 编解码 缓存
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄了个来实测确认。经测试实际上也是可以通过web网页配置(与网络摄像头基本是一致的,在码流方面可能会有些不一样),然后提取rtsp流的,界面与球机无异,只是没有球机的云台控制功能,但是界面上也是有的。
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
|
8月前
|
存储 弹性计算 数据管理
阿里云OSS收费标准:流量费用、存储费及功能费价格表(详细计费规则)
阿里云OSS收费标准涵盖存储、流量及功能费用,支持按量付费与资源包两种模式。标准存储按量0.09元/GB/月,40GB包年9元,100GB包年99元,500GB预留空间118.99元/年。流量仅公网流出收费,闲时0.25元/GB,忙时0.5元/GB,可购流量包抵扣。开通Bucket免费,上传不收费,下载按流量计费。多种存储类型满足不同需求,成本透明灵活。
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1720 1
Spring boot 使用mybatis generator 自动生成代码插件
|
6月前
|
人工智能 安全 数据可视化
2026年OpenClaw(Clawdbot)零门槛部署接入阿里云Coding Plan保姆级实战教程
2026年AI自动化与编程辅助深度融合,OpenClaw(原Clawdbot、曾用名Moltbot)凭借“自然语言驱动执行+多场景适配+开源可扩展”的核心优势,成为个人开发者、轻量团队打造专属AI编程助手与自动化工具的首选框架。其不仅能实现代码生成、Bug调试、技术文档整理等编程相关任务,还能完成文件管理、跨工具协同、日程规划等自动化操作,而阿里云Coding Plan作为专为编程场景优化的特惠套餐,与OpenClaw无缝适配,既能提供高性能的通义千问大模型算力支撑,又能以高性价比满足高频次模型调用需求,彻底打破“AI编程工具高成本、部署难”的壁垒。
2543 1