# docker **Repository Path**: 618lf/docker ## Basic Information - **Project Name**: docker - **Description**: Docker是一个开源项目,提供轻量级容器化解决方案,帮助开发者构建、部署和运行应用程序,支持多平台环境。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-13 - **Last Updated**: 2025-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker 服务管理项目 #### 介绍 Docker 是一个开源项目,提供轻量级容器化解决方案,帮助开发者构建、部署和运行应用程序,支持多平台环境。 本项目提供了一套完整的 Docker 服务管理方案,包含 Redis、MongoDB、MySQL、PostgreSQL、RabbitMQ、MinIO、Zookeeper 和 Portainer 等常用开发服务的一键部署脚本。 #### 软件架构 ``` docker/ ├── composes/ # Docker Compose 配置文件目录 │ ├── redis5-docker-compose.yml │ ├── mongodb-docker-compose.yml │ ├── mysql-docker-compose.yml │ ├── postgres-pgvector-docker-compose.yml │ ├── rabbitmq-docker-compose.yml │ ├── minio-docker-compose.yml │ ├── zookeeper-docker-compose.yml │ └── portainer-docker-compose.yml ├── config/ # 配置文件目录 │ ├── docker-compose.env.macos # macOS 环境配置 │ ├── docker-compose.env.windows # Windows 环境配置 │ ├── docker-compose.env.linux # Linux 服务器环境配置 │ ├── my-redis.conf # Redis 配置 │ ├── mongod.conf # MongoDB 配置 │ ├── custom-my.cnf # MySQL 配置 │ └── minio.env # MinIO 配置 ├── deploy.sh # 部署脚本(macOS) ├── deploy.cmd # 部署脚本(Windows) ├── deploy-linux.sh # 部署脚本(Linux 服务器) └── DATA-MANAGEMENT.md # 数据管理说明文档 ``` **数据存储位置**:`/Users/lifeng/data/docker/`(可在 docker-compose.env 中配置) #### 服务列表 | 服务 | 端口 | 说明 | |------|------|------| | Redis 5 | 6379 | 缓存数据库 | | MongoDB | 27017 | NoSQL 文档数据库 | | MySQL 8 | 3306 | 关系型数据库 | | PostgreSQL+pgvector | 5432 | 支持向量搜索的数据库 | | RabbitMQ | 5672, 15672 | 消息队列 (15672 为管理界面) | | MinIO | 9000, 9001 | 对象存储 (9001 为控制台) | | Zookeeper | 2181 | 分布式协调服务 | | Portainer | 9000 | Docker 可视化管理工具 | #### 安装教程 > 💡 **提示**: 详细的 macOS 使用指南请查看 → [MACOS-GUIDE.md](MACOS-GUIDE.md) ### 本地部署 **前置条件:** - 已安装 Docker Desktop(macOS/Windows) **快速开始:** 1. **克隆或下载本项目** ```bash cd /path/to/docker ``` 2. **运行部署脚本** **macOS/Linux:** ```bash ./deploy.sh ``` **Windows:** ```cmd deploy.cmd ``` **功能特点:** - 🎯 交互式菜单,选择要部署的服务 - 📁 自动设置配置文件和数据目录 - 📊 实时查看服务状态 - ⚙️ 管理服务启停 - 🔧 环境检查和配置管理 **手动部署单个服务:** ```bash cd composes # 启动 Redis docker-compose -f redis5-docker-compose.yml up -d # 启动 MySQL docker-compose -f mysql-docker-compose.yml up -d # 启动 MongoDB docker-compose -f mongodb-docker-compose.yml up -d # 查看运行状态 docker ps ``` #### 使用说明 ### 多环境配置 本项目支持 macOS、Windows 和 Linux 服务器三种环境,各自使用独立的配置文件: | 平台 | 配置文件 | 部署脚本 | |------|----------|----------| | macOS | `config/docker-compose.env.macos` | `deploy.sh` | | Windows | `config/docker-compose.env.windows` | `deploy.cmd` | | Linux 服务器 | `config/docker-compose.env.linux` | `deploy-linux.sh` | **自定义路径:** 编辑对应平台的配置文件,修改以下变量: ```bash # 数据存储根目录 DATA_ROOT=/your/path/to/data # 配置文件目录 CONFIG_ROOT=/your/path/to/config ``` ### 服务配置管理 本项目中的部分服务(如 Redis, MongoDB)支持通过外部挂载配置文件的方式进行自定义配置。这种方式使得配置的修改和管理变得非常方便,无需重建 Docker 镜像。 #### 1. 本地修改配置 所有的服务配置文件模板都存放在项目根目录下的 `config/` 文件夹中。你可以直接编辑这些文件来修改服务的行为。 - `config/my-redis.conf`: Redis 的配置文件。 - `config/mongod.conf`: MongoDB 的配置文件。 例如,要修改 Redis 的密码,你可以打开 `config/my-redis.conf` 并编辑 `requirepass` 指令。 #### 2. 上传配置到服务器 Docker Compose 文件配置为从服务器(宿主机)的 `/srv/docker_configs/` 目录加载这些配置文件。为了将你本地 `config/` 目录下的修改应用到服务器上,我们提供了一个 PowerShell 脚本 `upload_configs.ps1`。 **使用步骤:** 1. **配置脚本参数**: 打开 `upload_configs.ps1` 文件,根据你的实际情况修改头部的几个变量: - `$remoteUser`: 你的服务器登录用户名 (例如 `root`)。 - `$remoteHost`: 你的服务器 IP 地址。 - `$remoteBaseConfigPath`: 服务器上存放配置文件的路径 (默认为 `/srv/docker_configs`,通常无需修改)。 - `$localConfigSourcePath`: 本地配置文件的路径 (默认为 `.\config`,通常无需修改)。 2. **运行脚本**: 在 PowerShell 终端中,直接运行该脚本: ```powershell .\upload_configs.ps1 ``` 脚本会自动在服务器上创建目标目录(如果不存在),然后使用 `scp` 命令将 `config/` 目录下的所有文件上传到服务器的 `$remoteBaseConfigPath` 目录中。在上传过程中,它会提示你输入服务器的登录密码。 #### 3. 重启 Docker 服务 配置文件上传到服务器后,对应的 Docker 服务需要重启才能加载新的配置。 ##### 方法一:使用命令行 例如,如果你修改了 Redis 的配置,你需要重启 Redis 服务: ```bash # 假设你已经通过 SSH 连接到服务器 # 进入 docker-compose 文件所在的目录 cd /path/to/your/composes_directory # 重启 redis 服务 # 注意:你需要根据你的 docker-compose 文件和项目名称来调整命令 docker-compose -f redis5-docker-compose.yml restart ``` 同样,如果修改了 MongoDB 的配置,也需要重启对应的服务。 ##### 方法二:使用 VS Code Docker 扩展 (推荐) 如果你在 VS Code 中安装了 Docker 扩展,操作会更加简单直观: 1. 点击 VS Code 左侧活动栏的 **Docker 图标** 🐳。 2. 在 **"CONTAINERS"** 视图下,找到你需要重启的容器(例如 `redis5_server`)。 3. **右键点击** 该容器,然后选择 **"Restart"**。 这个操作会自动重启容器并加载新的配置。你也可以通过右键菜单中的 "View Logs" 来查看服务日志,确认配置是否正确加载。 #### 4. macOS 本地环境说明 在 macOS 本地部署时,配置文件会自动复制到 `/srv/docker_configs/` 目录(与服务器保持一致)。 - 首次运行 `deploy.sh` 时会自动设置配置文件(需要输入 sudo 密码) - 修改 `config/` 目录下的配置文件后,可在脚本菜单中选择"重新设置配置文件" - 配置更新后需要重启对应的服务才能生效 #### 常用操作 **修改服务配置:** 1. 编辑 `config/` 目录下的配置文件 2. 如果在本地 macOS:运行 `./deploy.sh`,选择菜单"4) 重新设置配置文件" 3. 如果在远程服务器:运行 `.\upload_configs.ps1` (Windows PowerShell) 4. 重启对应的服务 **查看服务日志:** ```bash # 查看 Redis 日志 docker logs redis5_server # 查看 MySQL 日志 docker logs mysql_server # 实时跟踪日志 docker logs -f mongodb_server ``` **进入容器内部:** ```bash # 进入 Redis 容器 docker exec -it redis5_server bash # 进入 MySQL 容器 docker exec -it mysql_server bash # 使用 Redis CLI docker exec -it redis5_server redis-cli ``` **数据持久化:** 所有服务的数据都通过 Docker 卷进行持久化,即使容器被删除,数据也不会丢失。 ```bash # 查看所有卷 docker volume ls # 查看卷详情 docker volume inspect redis5_data ``` #### 常见问题 **Q1: 端口冲突怎么办?** 如果提示端口已被占用,可以: - 停止占用端口的程序 - 或修改对应的 docker-compose.yml 文件中的端口映射 例如修改 Redis 端口: ```yaml ports: - "6380:6379" # 将宿主机端口改为 6380 ``` **Q2: 配置文件修改后不生效?** 确保完成以下步骤: 1. 配置文件已正确复制到 `/srv/docker_configs/` 2. 已重启对应的 Docker 服务 3. 检查容器日志是否有错误信息 **Q3: macOS 上提示权限不足?** 脚本需要 sudo 权限来创建 `/srv/docker_configs/` 目录,请输入管理员密码。 **Q4: 如何完全清理服务?** ```bash # 停止并删除容器、网络 ./stop-all.sh # 删除数据卷(注意:会删除所有数据!) docker volume rm redis5_data mongodb_data mysql_data ``` **Q5: 服务默认密码是什么?** 请查看各服务的 docker-compose.yml 文件和 config/ 目录下的配置文件: - Redis: 见 `config/my-redis.conf` 的 `requirepass` - MySQL: 见 `composes/mysql-docker-compose.yml` 的 `MYSQL_ROOT_PASSWORD` - MongoDB: 见 `composes/mongodb-docker-compose.yml` 的 `MONGO_INITDB_ROOT_PASSWORD` ⚠️ **安全提示:生产环境请务必修改默认密码!** #### 故障排查 **Docker Desktop 未启动** ```bash # 检查 Docker 状态 docker info # 如果失败,请打开 Docker Desktop 应用 open -a Docker ``` **查看容器资源占用** ```bash docker stats ``` **清理 Docker 系统** ```bash # 清理未使用的镜像、容器、网络 docker system prune # 查看磁盘占用 docker system df ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 许可证 本项目采用开源许可证,详见 LICENSE 文件。 #### 相关链接 - [Docker 官方文档](https://docs.docker.com/) - [Docker Compose 文档](https://docs.docker.com/compose/) - [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop)