news 2026/5/22 23:37:05

【Docker】summary

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Docker】summary

基础命令

# 查看容器状态
docker ps

# 查看容器日志(排错神器)
docker logs 容器名称

# 进入容器内部
docker exec -it 容器名称 bash

# 停止容器
docker stop 容器名称

# 启动容器
docker start 容器名称

# 删除容器(不会删有 -v 挂载的数据)
docker rm 容器名称

# 查询 windows docker 下载的镜像所在路径

docker info | findstr "Docker Root Dir"

redis 环境

基础信息(1 主 2 从 3 哨兵)

  • 密码:123456
  • 主节点:127.0.0.1:6379
  • 从节点:6380、6381
  • 哨兵节点:63791、63792、63793
  • 哨兵主名称:mymaster
  • 适用:Windows PowerShell

1. 一键创建 1 主 2 从 3 哨兵(全新创建)

powershell

docker run -d --name redis-master -p 6379:6379 redis redis-server --requirepass 123456; docker run -d --name redis-slave1 -p 6380:6379 redis redis-server --slaveof 127.0.0.1 6379 --masterauth 123456 --requirepass 123456; docker run -d --name redis-slave2 -p 6381:6379 redis redis-server --slaveof 127.0.0.1 6379 --masterauth 123456 --requirepass 123456; docker run -d --name sentinel1 -p 63791:26379 redis sh -c "mkdir -p /tmp && echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf && echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf && redis-sentinel /tmp/sentinel.conf"; docker run -d --name sentinel2 -p 63792:26379 redis sh -c "mkdir -p /tmp && echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf && echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf && redis-sentinel /tmp/sentinel.conf"; docker run -d --name sentinel3 -p 63793:26379 redis sh -c "mkdir -p /tmp && echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf && echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf && redis-sentinel /tmp/sentinel.conf"

2. 一键清空所有容器(删除重建)

powershell

docker rm -f $(docker ps -a -q --filter "name=redis") docker rm -f $(docker ps -a -q --filter "name=sentinel")

3. 【最关键】哨兵配置文件修改(必须按顺序)

重要规则

修改前 → 必须关闭哨兵容器修改后 → 必须重启哨兵容器

步骤 1:关闭所有哨兵(必须做)

powershell

docker stop sentinel1 sentinel2 sentinel3

步骤 2:修改配置文件(覆盖写入)

powershell

# 修改 sentinel1 docker exec sentinel1 sh -c "echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf" docker exec sentinel1 sh -c "echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf" # 修改 sentinel2 docker exec sentinel2 sh -c "echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf" docker exec sentinel2 sh -c "echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf" # 修改 sentinel3 docker exec sentinel3 sh -c "echo 'sentinel monitor mymaster 127.0.0.1 6379 2' > /tmp/sentinel.conf" docker exec sentinel3 sh -c "echo 'sentinel auth-pass mymaster 123456' >> /tmp/sentinel.conf"

步骤 3:重启所有哨兵(必须做)

powershell

docker start sentinel1 sentinel2 sentinel3

4. 一键关闭所有(仅停止,保留容器)

Windows 专用

powershell

docker stop $(docker ps -a --filter "name=redis" --filter "name=sentinel" -q)

5. 一键启动所有(恢复原有容器)

Windows 专用

powershell

docker start $(docker ps -a --filter "name=redis" --filter "name=sentinel" -q)

6. 常用命令

查看所有容器状态

powershell

docker ps -a

查看哨兵日志

powershell

docker logs sentinel1

rocketmq 环境

  • 停止docker stop rmqnamesrv rmqbroker rmqdashboard
  • 启动docker start rmqnamesrv rmqbroker rmqdashboard

使用 docker 安装 rocketmq 环境

下面给出一套单节点、可直接复制运行的 Docker 部署 RocketMQ 5.x(含 NameServer、Broker+Proxy、可视化控制台)完整步骤,适合开发 / 测试环境。


1. 环境准备

  • 已安装 Docker(建议 20.10+)
  • 防火墙放行端口:9876、10909、10911、10912、8080

2. 拉取镜像(官方 5.3.2)

bash

运行

# 核心镜像(NameServer + Broker + Proxy) docker pull apache/rocketmq:5.3.2 # 可视化控制台 docker pull styletang/rocketmq-console-ng:latest

3. 创建网络(容器互通)

bash

运行

docker network create rocketmq

4. 启动 NameServer(注册中心)

bash

运行

docker run -d \ --name rmqnamesrv \ --network rocketmq \ --restart always \ -p 9876:9876 \ -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" \ apache/rocketmq:5.3.2 \ sh mqnamesrv

验证:

bash

运行

docker logs -f rmqnamesrv # 看到 The Name Server boot success 即可

5. 启动 Broker + Proxy(消息核心)

bash

运行

docker run -d \ --name rmqbroker \ --network rocketmq \ --restart always \ -p 10909:10909 -p 10911:10911 -p 10912:10912 \ -p 8080:8080 -p 8081:8081 \ -e "NAMESRV_ADDR=rmqnamesrv:9876" \ -e "JAVA_OPT_EXT=-Xms512m -Xmx512m" \ apache/rocketmq:5.3.2 \ sh mqbroker -n rmqnamesrv:9876

验证:

bash

运行

docker logs -f rmqbroker # 看到 broker boot success 即可

6. 启动可视化控制台(Web 管理)

bash

运行

docker run -d \ --name rmqconsole \ --network rocketmq \ --restart always \ -p 8082:8080 \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.console.config.path=/tmp" \ styletang/rocketmq-console-ng:latest

访问:

plaintext

http://localhost:8082

7. 测试发送 / 消费消息

进入 Broker 容器测试:

bash

运行

docker exec -it rmqbroker bash # 发送消息 sh tools.sh org.apache.rocketmq.example.quickstart.Producer # 消费消息 sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

8. 常用端口说明

  • 9876:NameServer
  • 10909:Broker 对外服务端口
  • 10911:Broker VIP 端口
  • 10912:Broker 高可用端口
  • 8080/8081:Proxy 端口(5.x 新架构)
  • 8082:可视化控制台

9. (可选)Docker Compose 一键启动

新建docker-compose.yml

yaml

version: '3.8' services: namesrv: image: apache/rocketmq:5.3.2 container_name: rmqnamesrv ports: - "9876:9876" networks: - rocketmq command: sh mqnamesrv environment: JAVA_OPT_EXT: "-Xms256m -Xmx256m" broker: image: apache/rocketmq:5.3.2 container_name: rmqbroker ports: - "10909:10909" - "10911:10911" - "10912:10912" - "8080:8080" - "8081:8081" networks: - rocketmq depends_on: - namesrv environment: NAMESRV_ADDR: "rmqnamesrv:9876" JAVA_OPT_EXT: "-Xms512m -Xmx512m" command: sh mqbroker -n rmqnamesrv:9876 console: image: styletang/rocketmq-console-ng:latest container_name: rmqconsole ports: - "8082:8080" networks: - rocketmq depends_on: - namesrv environment: JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876" networks: rocketmq: driver: bridge

启动:

bash

运行

docker-compose up -d

如需,我可以帮你写一份Windows 环境下的启动脚本(含自动创建目录),直接双击即可运行。

将上述换行的命令改成不换行的形式

我把所有多行换行的 docker run 命令全部改成一行不换行版本,直接复制粘贴就能用,非常方便:

1. 创建网络

docker network create rocketmq

2. 启动 NameServer

docker run -d --name rmqnamesrv --network rocketmq --restart always -p 9876:9876 -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" apache/rocketmq:5.3.2 sh mqnamesrv

3. 启动 Broker

docker run -d --name rmqbroker --network rocketmq --restart always -p 10909:10909 -p 10911:10911 -p 10912:10912 -p 8080:8080 -p 8081:8081 -e "NAMESRV_ADDR=rmqnamesrv:9876" -e "JAVA_OPT_EXT=-Xms512m -Xmx512m" apache/rocketmq:5.3.2 sh mqbroker -n rmqnamesrv:9876

4. 启动控制台

docker run -d --name rmqconsole --network rocketmq --restart always -p 8082:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.console.config.path=/tmp" styletang/rocketmq-console-ng:latest

5. 测试命令

docker exec -it rmqbroker bash

完整一键执行顺序(复制全部一起运行)

docker network create rocketmq docker run -d --name rmqnamesrv --network rocketmq --restart always -p 9876:9876 -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" apache/rocketmq:5.3.2 sh mqnamesrv docker run -d --name rmqbroker --network rocketmq --restart always -p 10909:10909 -p 10911:10911 -p 10912:10912 -p 8080:8080 -p 8081:8081 -e "NAMESRV_ADDR=rmqnamesrv:9876" -e "JAVA_OPT_EXT=-Xms512m -Xmx512m" apache/rocketmq:5.3.2 sh mqbroker -n rmqnamesrv:9876 docker run -d --name rmqconsole --network rocketmq --restart always -p 8082:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.console.config.path=/tmp" styletang/rocketmq-console-ng:latest

总结

  • 所有命令都已压缩为单行,无换行、无转义符
  • 直接复制即可在 Windows/Linux/Mac 终端运行
  • 启动完成后访问控制台:http://localhost:8082

MySQL

docker run -d --name mysql8 -p 3306:3306 ^
# docker run : 创建并启动一个新的容器
# -d : 后台运行容器(守护进程模式,detached)
# --name mysql8 : 给容器指定一个名字叫 mysql8(方便后续管理,如 start/stop/rm)
# -p 3306:3306 : 端口映射
# 宿主机端口:容器内部端口
# 即:访问本机 3306 端口 = 访问容器里的 MySQL 3306 端口

-v D:/Environment/docker/mysql8/data:/var/lib/mysql ^
# -v : 数据卷挂载(Volume)
# D:/Environment/docker/mysql8/data
# 👉 Windows 宿主机的目录(用于持久化数据)
# /var/lib/mysql
# 👉 MySQL 容器内部存放数据库文件的目录
# 作用:即使容器删除,数据库数据也不会丢失(非常重要)

-e MYSQL_ROOT_PASSWORD=123456 ^
# -e : 设置环境变量
# MYSQL_ROOT_PASSWORD
# 👉 MySQL 官方镜像要求的变量
# 用于设置 root 用户的密码
# 这里密码设置为:123456(生产环境请勿使用弱密码)

--restart=always mysql:8.0
# --restart=always
# 👉 Docker 重启或宿主机重启时,自动启动该容器
# mysql:8.0 : 使用的镜像名称和版本
# 👉 如果不写版本,默认是 mysql:latest

docker run -d --name mysql8 -p 3306:3306 ^
-v D:/Environment/docker/mysql8/data:/var/lib/mysql ^
-e MYSQL_ROOT_PASSWORD=123456 ^
--restart=always mysql:8.0

既然你运行容器时使用了-v D:/Environment/docker/mysql8/data:/var/lib/mysql进行数据卷挂载,那么删除容器并不会删除你主机上的数据

恢复(实际上是“重建”)非常简单,直接重新执行原来那条docker run命令即可

相关命令:

docker run -d `
--name rocketmq-namesrv `
-p 9876:9876 `
-v D:/Environment/docker/rocketmq/namesrv/logs:/home/rocketmq/logs `
-v D:/Environment/docker/rocketmq/namesrv/store:/home/rocketmq/store `
-e "JAVA_OPTS=-Xms512m -Xmx512m" `
apache/rocketmq:5.1.0 `
sh mqnamesrv

docker run -d `
--name rocketmq-broker `
-p 10909:10909 `
-p 10911:10911 `
-p 10912:10912 `
-v D:/Environment/docker/rocketmq/broker/conf/broker.conf:/home/rocketmq/conf/broker.conf `
-v D:/Environment/docker/rocketmq/broker/logs:/home/rocketmq/logs `
-v D:/Environment/docker/rocketmq/broker/store:/home/rocketmq/store `
-e "JAVA_OPTS=-Xms1g -Xmx1g" `
apache/rocketmq:5.1.0 `
sh mqbroker -n 10.8.57.188:9876 -c /home/rocketmq/conf/broker.conf

docker run -d `
--name rocketmq-dashboard `
-p 8086:8080 `
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.8.57.188:9876" `
apacherocketmq/rocketmq-dashboard:latest


docker run -d --name rocketmq-dashboard `
-e "JAVA_OPTS=-Xmx512m -Xms512m -Drocketmq.namesrv.addr=10.8.57.188:9876" `
-p 8086:8080 `
apacherocketmq/rocketmq-dashboard:latest

docker stop rocketmq-namesrv rocketmq-broker rocketmq-dashboard
docker rm rocketmq-namesrv rocketmq-broker rocketmq-dashboard


首次启动 / 重建启动​
docker compose up -d --build
查看运行状态​
docker compose ps
查看 Broker 日志​
docker compose logs -f broker
停止但不删除数据​
docker compose down
停止并删除所有数据(慎用)​
docker compose down -v

#查看配置
Get-Content D:/Environment/docker/rocketmq/broker/conf/broker.conf

Docker Compose


dev / test / prod 配置不同
👉 Docker Compose 本身并没有“模块化”语法,所以它不适合“单体巨石文件”。
二、工程实践中正确的解决思路(非常重要)
✅ 核心原则
一个 docker-compose = 一个“关注点”​
而不是 一个 docker-compose = 整个系统


三、推荐方案:Compose 拆分 + 合并加载(工业级)
✅ 方案一:docker-compose.yml + 多个 override / fragment
目录结构(强烈推荐)
deploy/
├── docker-compose.yml # 公共基础
├── redis.yml # Redis 主从 + Sentinel
├── mysql.yml # MySQL
├── mq.yml # RocketMQ / Kafka
└── dev.env # 环境变量

#启动(后台)
docker compose up -d

#查看日志
docker compose logs -f 容器名

#停止但不删容器
docker compose stop

#停止并删除容器(数据不会丢)
docker compose down

启动方式

docker compose \
-f docker-compose.yml \
-f redis.yml \
-f mysql.yml \
-f mq.yml \
up -d

# 启动各组件
docker compose -f docker-compose.yml \
-f redis/docker-compose.redis.yml \
-f mysql/docker-compose.mysql.yml \
-f mq/docker-compose.kafka.yml \
up -d

docker run -d --name mysql8 -p 3306:3306 ^
# docker run : 创建并启动一个新的容器
# -d : 后台运行容器(守护进程模式,detached)
# --name mysql8 : 给容器指定一个名字叫 mysql8(方便后续管理,如 start/stop/rm)
# -p 3306:3306 : 端口映射
# 宿主机端口:容器内部端口
# 即:访问本机 3306 端口 = 访问容器里的 MySQL 3306 端口

-v D:/Environment/docker/mysql8/data:/var/lib/mysql ^
# -v : 数据卷挂载(Volume)
# D:/Environment/docker/mysql8/data
# 👉 Windows 宿主机的目录(用于持久化数据)
# /var/lib/mysql
# 👉 MySQL 容器内部存放数据库文件的目录
# 作用:即使容器删除,数据库数据也不会丢失(非常重要)

-e MYSQL_ROOT_PASSWORD=123456 ^
# -e : 设置环境变量
# MYSQL_ROOT_PASSWORD
# 👉 MySQL 官方镜像要求的变量
# 用于设置 root 用户的密码
# 这里密码设置为:123456(生产环境请勿使用弱密码)

--restart=always mysql:8.0
# --restart=always
# 👉 Docker 重启或宿主机重启时,自动启动该容器
# mysql:8.0 : 使用的镜像名称和版本
# 👉 如果不写版本,默认是 mysql:latest

docker run -d --name mysql8 -p 3306:3306 ^
-v D:/Environment/docker/mysql8/data:/var/lib/mysql ^
-e MYSQL_ROOT_PASSWORD=123456 ^
--restart=always mysql:8.0

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 23:33:06

【YOLO全系列架构演进史】4 YOLOv10:NMS-free 双分配与端到端延迟优化

YOLOv10:NMS-free 双分配与端到端延迟优化 1. 为什么 YOLO 需要一次"手术" 1.1.1.1 NMS 是谁,它带来了什么麻烦 我们先想象一个拥挤的十字路口。目标检测模型就像一位摄影师,试图给每一个行人框出一个矩形边框。问题是,这位摄影师有点"手抖"——同一…

作者头像 李华
网站建设 2026/5/22 23:30:44

skill-skill-creator

一、什么是 skill-creator?skill-creator 是 Anthropic 官方推出的元技能(meta-skill),核心定位是「技能工厂」—— 它能帮你快速创建、测试、评估和迭代优化 Claude Code 的专属技能,将零散的提示词工程升级为系统化的…

作者头像 李华
网站建设 2026/5/22 23:29:12

【AI】多轮执行:基于历史的连续任务处理

多轮执行:基于历史的连续任务处理📝 本章学习目标:本章深入探讨记忆机制,这是AI Agent持续执行的关键能力。通过本章学习,你将全面掌握"多轮执行:基于历史的连续任务处理"这一核心主题。一、引言…

作者头像 李华
网站建设 2026/5/22 23:27:11

CentOS安装Mysql数据库,配置数据存储路径和数据

文章目录 一、概述 1.1 配置信息 1.2 MySql数据库简介 二、安装数据库 2.1 创建MySql数据目录 2.2 安装mysql服务 2.2.1 获取mysql的yum仓库包 2.2.2 下载rpm仓库配置包 2.2.3 安装rpm包 2.2.4 查看rpm安装包列表确认是否安装成功 2.2.4 安装mysql服务器 2.2.5 查看mysql版本 2…

作者头像 李华
网站建设 2026/5/22 23:23:31

源代码论文分享|基于 Spring Boot 的校园商铺管理系统!

很多同学选毕业设计时都会纠结:题目太简单,怕老师觉得没含金量;题目太复杂,又怕自己做不完。 其实像校园商铺管理系统这种项目,就挺适合拿来做毕设或课程设计。它有真实场景,功能也能展开,技术…

作者头像 李华
网站建设 2026/5/22 23:22:08

3分钟搞定!GetQzonehistory:你的QQ空间记忆时光机

3分钟搞定!GetQzonehistory:你的QQ空间记忆时光机 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想过,那些在QQ空间里记录青春岁月的说说&a…

作者头像 李华