qt 可以做网站吗,免费的企业网站,wordpress 免费主题推荐,电商有哪些公司介 绍Docker 是一个开源的容器化平台#xff0c;它的核心目标是解决 “软件在不同环境下运行不一致” 的问题#xff0c;实现 “一次构建#xff0c;到处运行” 。它基于 Linux 内核的底层技术#xff0c;将应用程序及其依赖#xff08;如库文件、配置、运行环境等#x…介 绍Docker 是一个开源的容器化平台它的核心目标是解决 “软件在不同环境下运行不一致” 的问题实现 “一次构建到处运行” 。它基于 Linux 内核的底层技术将应用程序及其依赖如库文件、配置、运行环境等打包成一个标准化的 “容器”——这个容器就像一个轻量级的 “独立沙箱”它能够在隔离应用与宿主系统的同时也隔离不同应用之间的资源和运行环境这意味着每个应用都如同处于一个独立的空间中既不会受宿主系统的干扰也不会与其他应用产生资源冲突或环境干扰。同时又避免了传统虚拟机因包含完整操作系统而导致的体积庞大、启动缓慢问题。与传统虚拟机相比Docker 容器具有显著优势启动时间通常以秒级计算远快于虚拟机的分钟级单个宿主可同时运行数百个容器资源利用率更高且容器体积仅包含应用和依赖通常为 MB 级而虚拟机常为 GB 级。在实际场景中Docker 已成为开发、测试、部署全流程的核心工具开发人员可在本地用容器模拟生产环境避免 “本地能跑、线上报错”运维人员可通过容器快速实现应用的批量部署、扩容缩容企业则借助 Docker 构建微服务架构将复杂应用拆分为多个独立容器降低耦合度提升迭代效率。Docker 核心命令详解及示例1. 基础命令命令说明示例docker version查看 Docker 版本信息docker versiondocker info查看 Docker 系统信息docker infodocker --help查看 Docker 帮助文档docker --help2. 镜像相关命令命令说明示例docker images列出本地镜像docker imagesdocker search 镜像名搜索远程镜像docker search ubuntudocker pull 镜像名:标签拉取远程镜像docker pull ubuntu:20.04docker rmi 镜像ID/名称删除本地镜像docker rmi ubuntu:20.04docker build -t 镜像名:标签 Dockerfile路径构建镜像docker build -t myapp:1.0 .docker tag 原镜像 新镜像名:标签为镜像打标签docker tag myapp:1.0 username/myapp:1.0docker push 镜像名:标签推送镜像到仓库docker push username/myapp:1.03. 容器相关命令命令说明示例docker run [选项] 镜像名创建并启动容器docker run -it --name mycontainer ubuntu:20.04 /bin/bashdocker ps列出运行中的容器docker psdocker ps -a列出所有容器包括停止的docker ps -adocker start 容器ID/名称启动已停止的容器docker start mycontainerdocker stop 容器ID/名称停止运行中的容器docker stop mycontainerdocker restart 容器ID/名称重启容器docker restart mycontainerdocker rm 容器ID/名称删除容器docker rm mycontainerdocker exec [选项] 容器ID/名称 命令在运行的容器中执行命令docker exec -it mycontainer /bin/bashdocker logs 容器ID/名称查看容器日志docker logs mycontainerdocker inspect 容器ID/名称查看容器详细信息docker inspect mycontainerdocker cp 本地路径 容器ID/名称:容器路径复制文件到容器docker cp file.txt mycontainer:/root/docker cp 容器ID/名称:容器路径 本地路径从容器复制文件到本地docker cp mycontainer:/root/file.txt .4. 容器资源限制命令说明示例docker run -m 内存大小限制容器内存docker run -m 512m ubuntu:20.04docker run --cpus CPU核心数限制容器 CPUdocker run --cpus 0.5 ubuntu:20.045. 网络相关命令命令说明示例docker network ls列出网络docker network lsdocker network create 网络名创建网络docker network create mynetworkdocker network connect 网络名 容器名连接容器到网络docker network connect mynetwork mycontainerdocker network disconnect 网络名 容器名断开容器与网络的连接docker network disconnect mynetwork mycontainer示例使用 Docker 安装运行 Kafka 镜像容器----- 方式一 docker run旧版kafka需要zookeeper支持新版kafka有kraft不需要zookeeper1.docker run 配置如下
docker run -d
--name kafka-kraft
-e CLUSTER_IDwhaEHdjVT1Oacl9hnbmn1w
-e KAFKA_PROCESS_ROLESbroker,controller
-e KAFKA_LISTENERSPLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093-e KAFKA_ADVERTISED_LISTENERSPLAINTEXT://你的虚拟机ens33地址:9092
-e KAFKA_CONTROLLER_QUORUM_VOTERS0虚拟机回环地址:9093-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1-p 9092:9092-p 9093:9093
confluentinc/cp-kafka:latest2.docker ps3.docker pa -a4.docker start 容器名5.docker ps----- 方式二 docker-compose旧版kafka需要zookeeper支持步骤 1创建工作目录首先创建一个专门用于运行 Kafka 的目录避免文件混乱
mkdir -p ~/docker-kafka
cd ~/docker-kafka步骤 2创建 Docker Compose 配置文件Kafka 依赖 ZooKeeper 进行集群管理我们使用 Docker Compose 同时启动这两个服务。cd进入到kafka目录下创建 docker-compose.yml 文件
version: 3.8services:# ZooKeeper 服务zookeeper:image: confluentinc/cp-zookeeper:7.4.0 # 使用指定版本避免兼容性问题container_name: zookeeperenvironment:ZOOKEEPER_CLIENT_PORT: 2181 # 客户端连接端口ZOOKEEPER_TICK_TIME: 2000 # 心跳间隔时间毫秒ports:- 2181:2181 # 映射到宿主机的 2181 端口volumes:- zookeeper-data:/var/lib/zookeeper/data # 持久化数据- zookeeper-log:/var/lib/zookeeper/log # 持久化日志restart: unless-stopped # 异常退出时自动重启# Kafka 服务kafka:image: confluentinc/cp-kafka:7.4.0 # 与 ZooKeeper 版本保持一致container_name: kafkadepends_on:- zookeeper # 确保 ZooKeeper 先启动ports:- 9092:9092 # 宿主机访问端口environment:KAFKA_BROKER_ID: 1 # broker 唯一标识集群中需不同KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 # 连接 ZooKeeperKAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXTKAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092# 内部服务间通信使用 29092 端口外部访问使用 9092 端口KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 # 偏移量主题的副本数KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1volumes:- kafka-data:/var/lib/kafka/data # 持久化 Kafka 数据restart: unless-stopped # 异常退出时自动重启# 定义持久化卷
volumes:zookeeper-data:zookeeper-log:kafka-data:
步骤 3启动服务在 docker-compose.yml 所在目录执行以下命令启动服务
# 后台启动服务-d 表示 detached 模式
docker-compose up -d# 查看启动状态
docker-compose psWindows系统访问kafka注意不能直接通过浏览器访问 Kafka 的 9092 端口来操作 Kafka比如发送 / 接收消息、管理主题等核心原因是 Kafka 不支持 HTTP 协议浏览器默认使用 HTTP/HTTPS 协议它采用的是自定义的二进制协议基于 TCP浏览器无法解析这种协议自然无法直接交互。为什么浏览器无法访问 Kafka协议不兼容浏览器的核心功能是通过 HTTP/HTTPS 协议与服务器通信比如访问网页、调用 API而 Kafka 基于 TCP 实现了一套自定义二进制协议用于处理消息生产、消费、主题管理等操作两者协议完全不同浏览器无法识别 Kafka 的协议格式。Kafka 无 Web 界面Kafka 本身是一个 “后端消息中间件”默认没有内置 Web 管理界面或 HTTP 接口不像 Nginx、Tomcat 那样可以通过浏览器访问默认页面。即使你在浏览器中输入 http://Linux服务器IP:9092也只会得到 “连接失败” 或 “无法访问” 的提示。与 Kafka 不同RabbitMQ 默认支持通过浏览器访问—— 因为它内置了一个官方的 Web 管理界面RabbitMQ Management Plugin该界面基于 HTTP 协议提供服务浏览器可以直接解析和交互。下面详细说明如何通过浏览器访问 RabbitMQ以及相关配置和操作。