Linux Docker 安装与常用环境部署完整指南
本文详细介绍了在 Ubuntu / CentOS 系统中安装 Docker、部署常用中间件镜像,以及独立安装 JDK、Python、Nginx 等环境的完整步骤。包含每个软件的安装验证、启动/退出命令、密码设置、访问验证和常用命令参数详解。
适用系统 :Ubuntu 20.04/22.04/24.04、CentOS 7/8
涵盖内容 :Docker、JDK 8/17、Python、MySQL、Redis、Elasticsearch、MongoDB、MinIO、Nacos、RabbitMQ、RocketMQ、Nginx
更新日期:2026-07-02
目录
- [Linux Docker 安装与常用环境部署完整指南](#Linux Docker 安装与常用环境部署完整指南)
-
- [一、安装 Docker](#一、安装 Docker)
-
- [1.1 Ubuntu 下安装 Docker](#1.1 Ubuntu 下安装 Docker)
-
- [步骤 1:卸载旧版本](#步骤 1:卸载旧版本)
- [步骤 2:更新软件包索引并安装依赖](#步骤 2:更新软件包索引并安装依赖)
- [步骤 3:添加 Docker 官方 GPG 密钥](#步骤 3:添加 Docker 官方 GPG 密钥)
- [步骤 4:添加 Docker 仓库](#步骤 4:添加 Docker 仓库)
- [步骤 5:安装 Docker Engine](#步骤 5:安装 Docker Engine)
- [步骤 6:验证安装](#步骤 6:验证安装)
- [步骤 7:免 sudo 使用 Docker(可选)](#步骤 7:免 sudo 使用 Docker(可选))
- [1.2 CentOS 下安装 Docker](#1.2 CentOS 下安装 Docker)
-
- [步骤 1:卸载旧版本](#步骤 1:卸载旧版本)
- [步骤 2:安装依赖](#步骤 2:安装依赖)
- [步骤 3:添加 Docker 仓库](#步骤 3:添加 Docker 仓库)
- [步骤 4:安装 Docker](#步骤 4:安装 Docker)
- [步骤 5:启动并设置开机自启](#步骤 5:启动并设置开机自启)
- [步骤 6:验证安装](#步骤 6:验证安装)
- [1.3 安装 Docker Compose](#1.3 安装 Docker Compose)
- [1.4 配置 Docker 镜像加速](#1.4 配置 Docker 镜像加速)
- [1.5 Docker 常用命令速查](#1.5 Docker 常用命令速查)
- [二、Docker 安装常用镜像](#二、Docker 安装常用镜像)
-
- [2.1 OpenJDK 8 & JDK 17](#2.1 OpenJDK 8 & JDK 17)
- [2.2 Python](#2.2 Python)
- [2.3 MySQL](#2.3 MySQL)
- [2.4 Redis](#2.4 Redis)
- [2.5 Elasticsearch](#2.5 Elasticsearch)
- [2.6 MongoDB](#2.6 MongoDB)
- [2.7 MinIO](#2.7 MinIO)
- [2.8 Nacos](#2.8 Nacos)
- [2.9 RabbitMQ](#2.9 RabbitMQ)
- [2.10 RocketMQ](#2.10 RocketMQ)
- [2.11 Nginx](#2.11 Nginx)
- [2.12 Docker Compose 一键部署示例](#2.12 Docker Compose 一键部署示例)
- [三、Linux 独立安装常用软件](#三、Linux 独立安装常用软件)
-
- [3.1 安装 JDK 8](#3.1 安装 JDK 8)
-
- [方式一:通过 apt 安装(Ubuntu)](#方式一:通过 apt 安装(Ubuntu))
- 方式二:手动下载安装(通用)
- [CentOS / yum 安装](#CentOS / yum 安装)
- 安装成功验证与常用命令
- 密码/访问说明
- [3.2 安装 JDK 17](#3.2 安装 JDK 17)
-
- [方式一:通过 apt 安装(Ubuntu)](#方式一:通过 apt 安装(Ubuntu))
- 方式二:手动下载安装(通用)
- [多版本 JDK 共存切换](#多版本 JDK 共存切换)
- [CentOS / yum 安装](#CentOS / yum 安装)
- 安装成功验证与常用命令
- 密码/访问说明
- [3.3 安装 Python](#3.3 安装 Python)
-
- Ubuntu(apt)
- [CentOS(yum / dnf)](#CentOS(yum / dnf))
- [安装特定版本(如 Python 3.12)](#安装特定版本(如 Python 3.12))
- 安装成功验证与常用命令
- 密码/访问说明
- [3.4 安装 Nginx](#3.4 安装 Nginx)
-
- Ubuntu(apt)
- [CentOS(yum / dnf)](#CentOS(yum / dnf))
- [从 Nginx 官方仓库安装最新版(Ubuntu)](#从 Nginx 官方仓库安装最新版(Ubuntu))
- [常用 Nginx 命令](#常用 Nginx 命令)
- 安装成功验证与访问
- 常用配置参数详解
- 密码设置
- [3.5 安装 Git](#3.5 安装 Git)
- [3.6 安装 Maven](#3.6 安装 Maven)
- [四、各镜像验证 / 停止 / 常用命令速查总表](#四、各镜像验证 / 停止 / 常用命令速查总表)
-
- [4.1 各镜像特色常用命令](#4.1 各镜像特色常用命令)
- 五、常见问题与排错
-
- [5.1 Docker 常见问题](#5.1 Docker 常见问题)
- [5.2 Ubuntu vs CentOS 命令对照](#5.2 Ubuntu vs CentOS 命令对照)
- [5.3 常用运维命令速查](#5.3 常用运维命令速查)
一、安装 Docker
1.1 Ubuntu 下安装 Docker
**提示:**Ubuntu 使用
apt包管理器,不使用yum。以下步骤适用于 Ubuntu 20.04 / 22.04 / 24.04。
步骤 1:卸载旧版本
# 卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
步骤 2:更新软件包索引并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
步骤 3:添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
步骤 4:添加 Docker 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
步骤 5:安装 Docker Engine
# 安装最新版 Docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 或者安装指定版本(查看可用版本: apt-cache madison docker-ce)
# sudo apt-get install -y docker-ce=5:27.x.x~ubuntu-$(. /etc/os-release && echo "$VERSION_CODENAME") docker-ce-cli=5:27.x.x~ubuntu-$(. /etc/os-release && echo "$VERSION_CODENAME") containerd.io
步骤 6:验证安装
sudo docker run hello-world
步骤 7:免 sudo 使用 Docker(可选)
sudo usermod -aG docker $USER
# 重新登录或执行以下命令使生效
newgrp docker
1.2 CentOS 下安装 Docker
**提示:**CentOS 7 使用
yum,CentOS 8+ 使用dnf(兼容 yum 命令)。
步骤 1:卸载旧版本
sudo yum remove docker docker-client docker-client-latest \
docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-engine
步骤 2:安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
步骤 3:添加 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
**国内加速:**如果官方仓库访问慢,可使用阿里云镜像:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
步骤 4:安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
步骤 5:启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
步骤 6:验证安装
sudo docker run hello-world
1.3 安装 Docker Compose
Docker 最新版本已内置
docker compose插件(注意是docker compose而非docker-compose),如需独立安装旧版:
# 下载 Docker Compose 二进制文件(独立版)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose --version
1.4 配置 Docker 镜像加速
**注意:**国内拉取 Docker Hub 镜像较慢,建议配置镜像加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.5 Docker 常用命令速查
| 命令 | 说明 | 常用参数详解 |
|---|---|---|
docker --version |
查看 Docker 版本 | --- |
docker info |
查看 Docker 系统信息 | --- |
docker ps |
查看运行中的容器 | -a 显示所有(含已停止),-q 只显示 ID,-f 过滤 |
docker images |
查看所有镜像 | -q 只显示 ID,-f dangling=true 显示悬空镜像 |
docker pull 镜像名:标签 |
拉取镜像 | :标签 指定版本,默认为 latest |
docker push 镜像名:标签 |
推送镜像到仓库 | 需先 docker login 登录镜像仓库 |
docker rmi 镜像ID |
删除镜像 | -f 强制删除(有容器使用时) |
docker build -t 镜像名 . |
构建镜像 | -t 打标签,. 指定 Dockerfile 所在目录,--no-cache 不用缓存 |
docker run 镜像名 |
运行容器 | -d 后台运行,--name 命名,-p 宿主机:容器 端口映射,-v 宿主机:容器 挂载,-e KEY=VAL 环境变量,--rm 自动删除,--restart unless-stopped 自动重启 |
docker run -it --rm 镜像名 bash |
交互运行,退出后自动删除 | -i 交互模式,-t 分配伪终端,--rm 退出删除 |
docker start 容器名 |
启动已停止的容器 | -a 附加到容器输出,-i 交互模式 |
docker stop 容器名 |
停止容器 | 发送 SIGTERM 信号,等待 10 秒后强制停止 |
docker restart 容器名 |
重启容器 | 先 stop 再 start |
docker rm 容器名 |
删除容器 | -f 强制删除运行中的容器,-v 同时删除挂载的数据卷 |
docker logs 容器名 |
查看容器日志 | -f 实时跟踪,--tail 100 显示最后 100 行,-t 显示时间戳 |
docker exec 容器名 命令 |
在运行中的容器执行命令 | -it 交互终端,-u root 以 root 执行 |
docker inspect 容器名 |
查看容器详细信息 | 返回 JSON 格式,含 IP、挂载、环境变量等 |
docker top 容器名 |
查看容器内进程 | 类似宿主机 ps 命令 |
docker stats |
实时查看容器资源占用 | 显示 CPU、内存、网络、IO 等实时数据 |
docker cp 源 目标 |
宿主机与容器间复制文件 | 方向:宿主机:容器 或 容器:宿主机 |
docker volume 子命令 |
管理数据卷 | ls 列表,rm 删除,create 创建,inspect 查看详情 |
docker network 子命令 |
管理网络 | ls 列表,rm 删除,create 创建自定义网络 |
docker system df |
查看磁盘占用 | 显示镜像、容器、卷的磁盘使用情况 |
docker system prune |
清理未使用资源 | -a 清理所有未使用(含镜像),-f 不确认直接执行 |
docker compose up -d |
后台启动 Compose 服务 | -d 后台,--build 强制重新构建,-f 指定 compose 文件 |
docker compose down |
停止并删除 Compose 服务 | -v 同时删除数据卷,--rmi all 删除镜像 |
docker compose ps |
查看 Compose 服务状态 | 显示各服务运行状态和端口映射 |
docker compose logs |
查看 Compose 服务日志 | -f 实时跟踪,服务名 只看指定服务 |
二、Docker 安装常用镜像
2.1 OpenJDK 8 & JDK 17
OpenJDK 8
# 拉取镜像
docker pull openjdk:8-jdk
# 运行容器(测试)
docker run --rm openjdk:8-jdk java -version
OpenJDK 17
# 拉取镜像
docker pull openjdk:17-jdk
# 运行容器(测试)
docker run --rm openjdk:17-jdk java -version
推荐:使用 Eclipse Temurin(更稳定的企业版 JDK)
# JDK 8
docker pull eclipse-temurin:8-jdk
# JDK 17
docker pull eclipse-temurin:17-jdk
# 测试
docker run --rm eclipse-temurin:17-jdk java -version
**说明:**如果你需要在容器中编译运行 Spring Boot 项目,建议使用
eclipse-temurin:17-jdk镜像作为基础镜像。
密码/访问说明
**说明:**OpenJDK 镜像本身无密码认证机制。容器内仅提供 Java 运行环境,不涉及用户密码。如需安全隔离,可通过 Docker 容器自身的资源限制和网络策略控制访问。
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | docker run --rm eclipse-temurin:17-jdk java -version |
| 停止容器 | docker stop openjdk8 / docker stop openjdk17 |
| 删除容器 | docker rm openjdk8 / docker rm openjdk17 |
| 查看日志 | docker logs openjdk17 |
| 进入容器 | docker exec -it openjdk17 bash |
使用指南
**编译运行 Java 程序:**将本地代码挂载到容器中编译运行,或基于 JDK 镜像构建自定义应用镜像。
# 编译并运行单文件 Java 程序
docker run --rm -v $(pwd):/app -w /app eclipse-temurin:17-jdk \
bash -c "javac Hello.java && java Hello"
# 参数说明:
# -v $(pwd):/app 挂载当前目录
# -w /app 工作目录
# bash -c "..." 执行多行命令
# 查看已安装的 JDK 版本和路径
docker run --rm eclipse-temurin:17-jdk which java
docker run --rm eclipse-temurin:17-jdk echo $JAVA_HOME
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
javac Hello.java |
编译 Java 源文件为 .class 字节码 |
java Hello |
运行编译后的 Java 程序(无 .class 后缀) |
java -jar app.jar |
运行可执行的 JAR 包 |
java -Xms512m -Xmx1024m |
-Xms 初始堆内存,-Xmx 最大堆内存 |
javac -d . Hello.java |
-d 指定编译输出目录 |
2.2 Python
# 拉取镜像(推荐 3.12)
docker pull python:3.12
# 运行容器(测试)
docker run --rm python:3.12 python --version
# 进入容器交互
docker run -it --rm python:3.12 bash
| 镜像标签 | 说明 |
|---|---|
python:3.12 |
最新稳定版(推荐) |
python:3.11 |
上一个稳定版 |
python:3.12-slim |
精简版,镜像体积更小 |
python:3.12-alpine |
基于 Alpine Linux,最小体积 |
密码/访问说明
**说明:**Python 镜像本身无密码认证。容器内仅提供 Python 解释器环境。如需运行 Web 应用(如 Flask/Django),密码认证由应用层自行实现。
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | docker run --rm python:3.12 python --version |
| 停止容器 | docker stop python |
| 删除容器 | docker rm python |
| 查看日志 | docker logs python |
| 进入容器 | docker exec -it python bash |
使用指南
**运行 Python 脚本:**将本地脚本挂载到容器中执行,或构建自定义镜像。
# 运行本地 Python 脚本
docker run --rm -v $(pwd):/app -w /app python:3.12 python script.py
# 参数说明:
# -v $(pwd):/app 将当前目录挂载到容器 /app
# -w /app 设置容器内工作目录为 /app
# --rm 运行结束后自动删除容器
# 交互式运行并安装依赖
docker run -it --rm -v $(pwd):/app -w /app python:3.12 bash
pip install requests flask
python script.py
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
docker run -v 宿主机:容器 |
挂载宿主机目录到容器内 |
docker run -w 目录 |
设置容器内工作目录 |
docker run --rm |
容器退出后自动删除 |
pip install -r requirements.txt |
按 requirements.txt 安装依赖 |
python -m venv myenv |
创建 Python 虚拟环境 |
source myenv/bin/activate |
激活虚拟环境(Linux/macOS) |
2.3 MySQL
# 拉取镜像(8.0)
docker pull mysql:8.0
# 运行容器
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=mydb \
-e MYSQL_CHARACTER_SET_SERVER=utf8mb4 \
-e MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci \
-v mysql_data:/var/lib/mysql \
--restart unless-stopped \
mysql:8.0
# 进入容器
docker exec -it mysql mysql -uroot -p
| 参数 | 说明 |
|---|---|
-p 3306:3306 |
端口映射(宿主机:容器) |
-v mysql_data:/var/lib/mysql |
数据持久化到 Docker Volume |
--restart unless-stopped |
自动重启策略 |
MYSQL_ROOT_PASSWORD |
root 密码 |
密码设置
**初始化密码:**启动时通过环境变量
MYSQL_ROOT_PASSWORD设置 root 初始密码。
# 启动时设置 root 密码
docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=your_password \
...
# 进入 MySQL 后修改 root 密码
docker exec -it mysql mysql -uroot -p
# 输入原密码后执行:
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
# 创建新用户并授权
CREATE USER 'appuser'@'%' IDENTIFIED BY 'app_pass';
GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | docker exec -it mysql mysql -uroot -p -e "SELECT 1;" |
| 停止容器 | docker stop mysql |
| 删除容器 | docker rm mysql(加 -v 同时删除数据卷) |
| 查看日志 | docker logs mysql |
| 进入容器 | docker exec -it mysql bash |
| 备份数据 | docker exec mysql mysqldump -uroot -p mydb > backup.sql |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
docker exec -it mysql mysql -uroot -p |
-u 指定用户名,-p 提示输入密码,进入 MySQL 交互 Shell |
docker exec mysql mysqldump -uroot -p mydb > backup.sql |
mysqldump 备份工具,mydb 为数据库名,输出到 backup.sql |
docker exec -i mysql mysql -uroot -p mydb < backup.sql |
-i 保持标准输入,用于恢复备份到 mydb |
docker exec mysql mysql -uroot -p -e "SHOW DATABASES;" |
-e 执行 SQL 语句后直接退出 |
2.4 Redis
# 拉取镜像
docker pull redis:7
# 运行容器
docker run -d \
--name redis \
-p 6379:6379 \
-v redis_data:/data \
--restart unless-stopped \
redis:7 redis-server --appendonly yes
# 连接测试
docker exec -it redis redis-cli ping
密码设置
**初始化密码:**启动时通过
--requirepass参数设置密码。
# 启动时设置密码
docker run -d --name redis \
redis:7 redis-server --appendonly yes --requirepass redis123
# 进入 Redis 后修改密码
docker exec -it redis redis-cli
AUTH redis123
CONFIG SET requirepass newpassword
# 或者修改配置文件后重启(持久化修改)
# 编辑 redis.conf 中的 requirepass 行
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | docker exec -it redis redis-cli ping(返回 PONG) |
| 停止容器 | docker stop redis |
| 删除容器 | docker rm redis |
| 查看日志 | docker logs redis |
| 进入容器 | docker exec -it redis sh |
| 连接 Redis CLI | docker exec -it redis redis-cli |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
redis-cli -h host -p 6379 -a password |
-h 主机,-p 端口,-a 密码,直接认证连接 |
SET key value EX 60 |
设置键值,EX 60 表示 60 秒后过期(TTL) |
GET key |
获取键值 |
INFO |
查看 Redis 服务器信息(内存、连接数等) |
MONITOR |
实时监控所有执行的命令(调试使用) |
redis-cli --bigkeys |
扫描大 Key,分析内存占用 |
2.5 Elasticsearch
**注意:**Elasticsearch 8.x 默认启用了安全认证,初始密码会在日志中生成。生产环境建议同时部署 Kibana。
# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.0
# 运行单节点(开发环境)
docker run -d \
--name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "xpack.security.enabled=false" \
-v es_data:/usr/share/elasticsearch/data \
--restart unless-stopped \
docker.elastic.co/elasticsearch/elasticsearch:8.12.0
# 验证
curl http://localhost:9200
**内存提示:**ES 默认 JVM 堆内存 1GB,可通过
ES_JAVA_OPTS调整。建议不超过物理内存的 50%,且不超过 32GB。
密码设置
**安全说明:**开发环境关闭安全认证方便调试。生产环境必须开启
xpack.security。
# 生产环境启动(开启安全认证)
docker run -d --name elasticsearch \
-e "xpack.security.enabled=true" \
-e "xpack.security.enrollment.enabled=true" \
...
# 查看自动生成的初始密码
docker logs elasticsearch | grep "PASSWORD"
# 重置 elastic 用户密码
docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic
# 修改内置用户密码
docker exec -it elasticsearch bin/elasticsearch-reset-password -u kibana_system
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | curl http://localhost:9200(返回集群信息 JSON) |
| 停止容器 | docker stop elasticsearch |
| 删除容器 | docker rm elasticsearch |
| 查看日志 | docker logs elasticsearch |
| 进入容器 | docker exec -it elasticsearch bash |
| 健康检查 | curl http://localhost:9200/_cluster/health |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
curl http://localhost:9200/_cluster/health |
查看集群健康状态(green/yellow/red) |
curl http://localhost:9200/_cat/indices?v |
v 显示表头,列出所有索引 |
curl -X PUT "localhost:9200/my_index" |
-X PUT 创建索引 my_index |
curl -X DELETE "localhost:9200/my_index" |
-X DELETE 删除索引 |
curl -X POST "localhost:9200/my_index/_doc" -H "Content-Type: application/json" -d '{"name":"test"}' |
-H 设置请求头,-d 发送 JSON 数据创建文档 |
curl "localhost:9200/my_index/_search?q=name:test" |
_search 搜索,q= 查询条件 |
2.6 MongoDB
# 拉取镜像
docker pull mongo:7
# 运行容器
docker run -d \
--name mongodb \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=your_password \
-v mongo_data:/data/db \
--restart unless-stopped \
mongo:7
# 连接测试
docker exec -it mongodb mongosh -u root -p
密码设置
**初始化密码:**启动时通过
MONGO_INITDB_ROOT_PASSWORD设置 root 密码。
# 启动时设置 root 密码
docker run -d --name mongodb \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=your_password \
...
# 进入 MongoDB 后修改 root 密码
docker exec -it mongodb mongosh -u root -p
use admin
db.changeUserPassword("root", "new_password")
# 创建应用用户
db.createUser({
user: "appuser",
pwd: "apppass",
roles: [{ role: "readWrite", db: "mydb" }]
})
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | docker exec -it mongodb mongosh -u root -p --eval "db.adminCommand('ping')" |
| 停止容器 | docker stop mongodb |
| 删除容器 | docker rm mongodb |
| 查看日志 | docker logs mongodb |
| 进入容器 | docker exec -it mongodb bash |
| 连接 Mongo Shell | docker exec -it mongodb mongosh -u root -p |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
mongosh -u root -p --authenticationDatabase admin |
-u 用户名,-p 提示密码,--authenticationDatabase 认证数据库 |
show dbs |
列出所有数据库 |
use mydb |
切换到 mydb 数据库(不存在则创建) |
db.collection.insertOne({name:"test"}) |
向 collection 插入单条文档 |
db.collection.find() |
查询所有文档 |
docker exec mongodb mongodump --out /data/backup |
mongodump 备份所有数据库到指定目录 |
docker exec mongodb mongorestore /data/backup |
mongorestore 从备份目录恢复 |
2.7 MinIO
# 拉取镜像
docker pull minio/minio
# 运行容器
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v minio_data:/data \
--restart unless-stopped \
minio/minio server /data --console-address ":9001"
**说明:**端口
9000为 API 服务,端口9001为 Web 管理控制台。浏览器访问http://localhost:9001即可进入管理界面。
密码设置
**初始化密码:**通过环境变量
MINIO_ROOT_USER和MINIO_ROOT_PASSWORD设置管理员账号密码。
# 启动时设置管理员密码
docker run -d --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=StrongPass123" \
...
# 通过 mc 客户端修改密码(进入容器)
docker exec -it minio sh
mc alias set local http://localhost:9000 admin StrongPass123
mc admin user add local newuser newpass
mc admin policy set local readwrite user=newuser
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | curl http://localhost:9000/minio/health/live |
| 停止容器 | docker stop minio |
| 删除容器 | docker rm minio |
| 查看日志 | docker logs minio |
| 进入容器 | docker exec -it minio sh |
| 管理控制台 | 浏览器访问 http://localhost:9001 |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
mc alias set 别名 http://host:9000 用户 密码 |
配置 MinIO 客户端连接别名 |
mc ls 别名/ |
列出所有存储桶(Bucket) |
mc mb 别名/bucketname |
mb = make bucket,创建存储桶 |
mc cp 本地文件 别名/bucketname/ |
cp = copy,上传文件到存储桶 |
mc rm 别名/bucketname/文件名 |
rm = remove,删除存储桶内文件 |
mc mirror 本地目录 别名/bucketname/ |
mirror 同步本地目录到存储桶 |
2.8 Nacos
# 拉取镜像(单机模式)
docker pull nacos/nacos-server:v2.3.0
# 运行容器(单机模式 + 内嵌数据库)
docker run -d \
--name nacos \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-p 8848:8848 \
-p 9848:9848 \
--restart unless-stopped \
nacos/nacos-server:v2.3.0
**说明:**单机模式使用内嵌 Derby 数据库,适合开发测试。生产环境建议使用外部 MySQL 数据库,并配置
SPRING_DATASOURCE_PLATFORM=mysql相关环境变量。Nacos 2.x 需要额外开放9848端口(gRPC)。
密码设置
**默认密码:**Nacos 单机模式默认账号
nacos,密码nacos。
# 登录控制台后修改密码
# 浏览器访问 http://localhost:8848/nacos
# 账号:nacos 密码:nacos
# 进入"权限控制 > 用户列表"修改密码
# 或通过 Open API 修改密码
curl -X PUT 'http://localhost:8848/nacos/v1/auth/user' \
-d 'username=nacos&oldPassword=nacos&newPassword=newpass'
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | curl http://localhost:8848/nacos/v1/console/health/readiness |
| 停止容器 | docker stop nacos |
| 删除容器 | docker rm nacos |
| 查看日志 | docker logs nacos |
| 进入容器 | docker exec -it nacos bash |
| 管理控制台 | 浏览器访问 http://localhost:8848/nacos(默认账号密码均为 nacos) |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
curl /nacos/v1/ns/instance/list?serviceName=my-service |
查询服务 my-service 的注册实例列表 |
curl -X POST /nacos/v1/cs/configs ... |
发布配置,dataId 配置 ID,group 分组,content 配置内容 |
curl /nacos/v1/cs/configs?dataId=xxx&group=yyy |
获取指定 dataId 和 group 的配置内容 |
curl -X DELETE /nacos/v1/cs/configs?dataId=xxx&group=yyy |
删除指定配置 |
2.9 RabbitMQ
# 拉取镜像(带管理控制台)
docker pull rabbitmq:3-management
# 运行容器
docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v rabbitmq_data:/var/lib/rabbitmq \
--restart unless-stopped \
rabbitmq:3-management
**说明:**端口
5672为 AMQP 协议端口,端口15672为 Web 管理控制台。浏览器访问http://localhost:15672,使用admin/admin登录。
密码设置
**初始化密码:**通过环境变量
RABBITMQ_DEFAULT_USER和RABBITMQ_DEFAULT_PASS设置默认用户。
# 启动时设置默认用户密码
docker run -d --name rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
...
# 进入容器后修改用户密码
docker exec -it rabbitmq bash
rabbitmqctl change_password admin newpassword
# 新增用户并授权
rabbitmqctl add_user newuser newpass
rabbitmqctl set_user_tags newuser administrator
rabbitmqctl set_permissions -p / newuser ".*" ".*" ".*"
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | curl -u admin:admin http://localhost:15672/api/overview |
| 停止容器 | docker stop rabbitmq |
| 删除容器 | docker rm rabbitmq |
| 查看日志 | docker logs rabbitmq |
| 进入容器 | docker exec -it rabbitmq bash |
| 管理控制台 | 浏览器访问 http://localhost:15672 |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
rabbitmqctl list_queues |
列出所有队列及消息数 |
rabbitmqctl list_users |
列出所有用户 |
rabbitmqctl list_connections |
列出所有客户端连接 |
rabbitmqctl status |
查看节点运行状态 |
rabbitmqctl purge_queue queue_name |
清空指定队列中的所有消息 |
rabbitmqadmin -u admin -p admin list queues |
通过 HTTP API 列出队列(需安装 rabbitmqadmin) |
2.10 RocketMQ
RocketMQ 需要分别启动 NameServer 和 Broker,推荐使用 docker-compose。
# 拉取镜像
docker pull apache/rocketmq:5.1.4
# 1. 启动 NameServer
docker run -d \
--name rmqnamesrv \
-p 9876:9876 \
--restart unless-stopped \
apache/rocketmq:5.1.4 \
sh mqnamesrv
# 2. 启动 Broker
docker run -d \
--name rmqbroker \
-p 10911:10911 \
-p 10909:10909 \
--restart unless-stopped \
-e "NAMESRV_ADDR=host.docker.internal:9876" \
apache/rocketmq:5.1.4 \
sh mqbroker -n host.docker.internal:9876
**注意:**如果 NameServer 和 Broker 在同一台宿主机上,
NAMESRV_ADDR使用host.docker.internal或宿主机实际 IP,不要使用localhost(容器内 localhost 指向容器自身)。
可选:RocketMQ Dashboard(管理控制台)
docker run -d \
--name rmqdashboard \
-p 8080:8080 \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=host.docker.internal:9876" \
--restart unless-stopped \
apacherocketmq/rocketmq-dashboard:1.0.0
密码设置
**说明:**RocketMQ 默认无密码认证。生产环境建议配置 ACL 访问控制。
# 在 Broker 配置中启用 ACL
cat > /path/to/broker.conf <
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证(NameServer) | `docker logs rmqnamesrv |
| 启动验证(Broker) | `docker logs rmqbroker |
| 停止 NameServer | docker stop rmqnamesrv |
| 停止 Broker | docker stop rmqbroker |
| 删除容器 | docker rm rmqnamesrv rmqbroker rmqdashboard |
| 查看日志 | docker logs rmqnamesrv / docker logs rmqbroker |
| 进入容器 | docker exec -it rmqnamesrv sh |
| 管理控制台 | 浏览器访问 http://localhost:8080 |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
mqadmin topicList -n namesrv:9876 |
-n 指定 NameServer 地址,列出所有 Topic |
mqadmin updateTopic -n namesrv:9876 -t topic -c cluster |
-t Topic 名,-c 集群名,创建/更新 Topic |
mqadmin consumerProgress -n namesrv:9876 |
查看所有消费者组的消费进度 |
mqadmin brokerStatus -n namesrv:9876 -b broker:10911 |
-b Broker 地址,查看 Broker 状态 |
2.11 Nginx
# 拉取镜像
docker pull nginx:1.25
# 运行容器
docker run -d \
--name nginx \
-p 80:80 \
-p 443:443 \
-v nginx_conf:/etc/nginx \
-v nginx_html:/usr/share/nginx/html \
-v nginx_logs:/var/log/nginx \
--restart unless-stopped \
nginx:1.25
# 验证
curl http://localhost
**说明:**将本地配置文件挂载到容器内即可自定义 Nginx 配置。例如:
-v /my/nginx.conf:/etc/nginx/nginx.conf
密码设置
**说明:**Nginx 本身无内置用户密码系统。可通过 Basic Auth 为站点添加密码保护。
# 1. 在宿主机生成密码文件
sudo apt-get install -y apache2-utils
htpasswd -c /my/htpasswd admin
# 输入密码确认
# 2. 挂载密码文件到容器,并在 nginx.conf 中配置
# location / {
# auth_basic "Restricted";
# auth_basic_user_file /etc/nginx/htpasswd;
# }
# 3. 带密码文件启动 Nginx
docker run -d --name nginx \
-v /my/htpasswd:/etc/nginx/htpasswd:ro \
-v /my/nginx.conf:/etc/nginx/nginx.conf:ro \
...
验证与停止
| 操作 | 命令 |
|---|---|
| 启动验证 | curl -I http://localhost(返回 HTTP 200) |
| 停止容器 | docker stop nginx |
| 删除容器 | docker rm nginx |
| 查看日志 | docker logs nginx |
| 进入容器 | docker exec -it nginx bash |
| 重载配置 | docker exec nginx nginx -s reload |
| 检查配置 | docker exec nginx nginx -t |
常用命令及参数详解
| 命令 | 参数说明 |
|---|---|
nginx -t |
测试配置文件语法是否正确 |
nginx -s reload |
-s 发送信号,reload 重新加载配置(不中断连接) |
nginx -s stop |
快速停止 Nginx |
nginx -s quit |
优雅退出(处理完当前请求后停止) |
docker cp nginx:/etc/nginx/nginx.conf ./nginx.conf |
从容器复制默认配置文件到本地修改 |
docker exec nginx nginx -V |
查看 Nginx 编译参数和模块列表 |
2.12 Docker Compose 一键部署示例
以下
docker-compose.yml可以一键启动 MySQL、Redis、Nacos 等常用中间件。
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: mydb
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped
redis:
image: redis:7
container_name: redis
ports:
- "6379:6379"
command: redis-server --appendonly yes --requirepass redis123456
volumes:
- redis_data:/data
restart: unless-stopped
nacos:
image: nacos/nacos-server:v2.3.0
container_name: nacos
ports:
- "8848:8848"
- "9848:9848"
environment:
MODE: standalone
JVM_XMS: 256m
JVM_XMX: 256m
restart: unless-stopped
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin123456
volumes:
- rabbitmq_data:/var/lib/rabbitmq
restart: unless-stopped
nginx:
image: nginx:1.25
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- nginx_html:/usr/share/nginx/html
restart: unless-stopped
minio:
image: minio/minio
container_name: minio
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin123456
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
restart: unless-stopped
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
environment:
discovery.type: single-node
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
xpack.security.enabled: "false"
volumes:
- es_data:/usr/share/elasticsearch/data
restart: unless-stopped
mongodb:
image: mongo:7
container_name: mongodb
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongo123456
volumes:
- mongo_data:/data/db
restart: unless-stopped
volumes:
mysql_data:
redis_data:
rabbitmq_data:
nginx_html:
minio_data:
es_data:
mongo_data:
# 启动所有服务
docker compose up -d
# 查看运行状态
docker compose ps
# 停止所有服务
docker compose down
# 停止并删除数据卷(慎用!)
docker compose down -v
三、Linux 独立安装常用软件
3.1 安装 JDK 8
方式一:通过 apt 安装(Ubuntu)
sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
# 验证
java -version
**注意:**Ubuntu 22.04+ 默认仓库可能不再提供 JDK 8。如遇找不到包的问题,使用方式二手动安装。
方式二:手动下载安装(通用)
# 1. 下载 JDK 8(以 Temurin 为例)
wget https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u412-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
# 2. 解压
sudo mkdir -p /usr/lib/jvm
sudo tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz -C /usr/lib/jvm/
# 3. 配置环境变量
sudo tee -a /etc/profile.d/java8.sh <<'EOF'
export JAVA_8_HOME=/usr/lib/jvm/jdk8u412-b08
export PATH=$JAVA_8_HOME/bin:$PATH
EOF
source /etc/profile.d/java8.sh
# 4. 验证
java -version
CentOS / yum 安装
# CentOS 7
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# CentOS 8 / dnf
sudo dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 验证
java -version
安装成功验证与常用命令
| 命令 | 说明 |
|---|---|
java -version |
查看 Java 版本,确认 JDK 8 已正确安装 |
javac -version |
查看 Java 编译器版本 |
which java |
查看 Java 可执行文件路径 |
echo $JAVA_HOME |
查看 JAVA_HOME 环境变量是否设置 |
java -cp . Hello |
-cp 指定类路径,运行 Hello.class |
密码/访问说明
**说明:**JDK 本身无密码系统。Java 应用如需安全认证,需通过代码实现(如 Spring Security、JAAS 等)。
3.2 安装 JDK 17
方式一:通过 apt 安装(Ubuntu)
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk
# 验证
java -version
方式二:手动下载安装(通用)
# 1. 下载 JDK 17
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12+7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz
# 2. 解压
sudo mkdir -p /usr/lib/jvm
sudo tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz -C /usr/lib/jvm/
# 3. 配置环境变量
sudo tee -a /etc/profile.d/java17.sh <<'EOF'
export JAVA_17_HOME=/usr/lib/jvm/jdk-17.0.12+7
export PATH=$JAVA_17_HOME/bin:$PATH
EOF
source /etc/profile.d/java17.sh
# 4. 验证
java -version
多版本 JDK 共存切换
当系统同时安装了 JDK 8 和 JDK 17 时,可以使用
update-alternatives进行版本切换。
# 注册所有 JDK 版本到 alternatives 系统
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk8u412-b08/bin/java 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.12+7/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk8u412-b08/bin/javac 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17.0.12+7/bin/javac 2
# 切换 Java 版本
sudo update-alternatives --config java
sudo update-alternatives --config javac
# 验证
java -version
CentOS / yum 安装
sudo yum install -y java-17-openjdk java-17-openjdk-devel
# 验证
java -version
安装成功验证与常用命令
| 命令 | 说明 |
|---|---|
java -version |
查看当前默认 Java 版本 |
javac -version |
查看 Java 编译器版本 |
which java |
查看 Java 可执行文件路径 |
echo $JAVA_HOME |
查看 JAVA_HOME 环境变量 |
update-alternatives --config java |
切换多版本 JDK(需 root) |
java -Xms512m -Xmx1024m -jar app.jar |
指定堆内存运行 JAR 包 |
javac -d . Hello.java |
编译 Java 文件到当前目录 |
密码/访问说明
**说明:**JDK 本身无密码系统。Java 应用如需安全认证,需通过代码实现(如 Spring Security、JAAS 等)。
3.3 安装 Python
Ubuntu(apt)
# 安装 Python 3 及 pip
sudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv
# 验证
python3 --version
pip3 --version
CentOS(yum / dnf)
# CentOS 7
sudo yum install -y python3 python3-pip
# CentOS 8+
sudo dnf install -y python3 python3-pip
# 验证
python3 --version
安装特定版本(如 Python 3.12)
# 方式一:使用 deadsnakes PPA(Ubuntu)
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install -y python3.12 python3.12-venv python3.12-dev
# 方式二:源码编译(通用)
# 安装编译依赖
sudo apt-get install -y build-essential zlib1g-dev libncurses5-dev \
libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev \
libsqlite3-dev wget libbz2-dev
# 下载并编译
wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
tar -xf Python-3.12.4.tgz
cd Python-3.12.4
./configure --enable-optimizations --prefix=/usr/local
make -j$(nproc)
sudo make altinstall
# 验证
python3.12 --version
推荐使用虚拟环境:
python3 -m venv myenv source myenv/bin/activate pip install <package_name>
安装成功验证与常用命令
| 命令 | 说明 |
|---|---|
python3 --version |
查看 Python 版本 |
pip3 --version |
查看 pip 版本 |
which python3 |
查看 Python 安装路径 |
python3 -m venv myenv |
创建名为 myenv 的虚拟环境 |
source myenv/bin/activate |
激活虚拟环境(Linux/macOS) |
deactivate |
退出虚拟环境 |
pip install 包名 |
安装 Python 包 |
pip install -r requirements.txt |
按文件批量安装依赖 |
pip list |
列出已安装的所有包 |
pip uninstall 包名 |
卸载指定包 |
密码/访问说明
**说明:**Python 本身无密码系统。运行 Web 框架(Django/Flask/FastAPI)时,密码认证由各框架自行管理。虚拟环境隔离不同项目的依赖。
3.4 安装 Nginx
Ubuntu(apt)
# 安装
sudo apt-get update
sudo apt-get install -y nginx
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 验证
curl http://localhost
# 或浏览器访问服务器 IP
CentOS(yum / dnf)
# 安装 EPEL 仓库
sudo yum install -y epel-release
# 安装 Nginx
sudo yum install -y nginx
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 验证
curl http://localhost
从 Nginx 官方仓库安装最新版(Ubuntu)
# 安装依赖
sudo apt-get install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
# 添加 Nginx 官方签名密钥和仓库
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt-get update
sudo apt-get install -y nginx
常用 Nginx 命令
# 启动 / 停止 / 重启
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
# 重新加载配置(不中断服务)
sudo systemctl reload nginx
# 检查配置文件语法
sudo nginx -t
# 查看状态
sudo systemctl status nginx
# 配置文件位置
# 主配置: /etc/nginx/nginx.conf
# 站点配置: /etc/nginx/conf.d/
# 默认页面: /usr/share/nginx/html/
安装成功验证与访问
**访问验证:**浏览器访问服务器 IP 或
http://localhost,看到 "Welcome to nginx!" 即成功。 配置文件路径:/etc/nginx/nginx.conf(主配置),/etc/nginx/conf.d/(站点配置),/usr/share/nginx/html/(默认页面)。
# 测试配置文件语法
sudo nginx -t
# 重载配置(不中断服务)
sudo systemctl reload nginx
# 查看 Nginx 版本和编译参数
nginx -V
# 查看 Nginx 进程
ps -ef | grep nginx
# 查看 Nginx 监听的端口
sudo ss -tlnp | grep nginx
常用配置参数详解
| 配置项 | 说明 |
|---|---|
listen 80; |
监听 80 端口(HTTP 默认) |
server_name example.com; |
绑定的域名 |
root /var/www/html; |
网站根目录 |
index index.html; |
默认首页文件 |
location /api { proxy_pass http://backend; } |
反向代理到后端服务 |
location / { try_files $uri $uri/ =404; } |
尝试匹配文件,不存在返回 404 |
密码设置
**说明:**Nginx 本身无内置用户系统。可通过 Basic Auth 为站点添加密码保护。
# 安装 apache2-utils 生成密码文件
sudo apt-get install -y apache2-utils
sudo htpasswd -c /etc/nginx/htpasswd admin
# 输入密码确认
# 在站点配置中添加认证
# location / {
# auth_basic "Restricted Area";
# auth_basic_user_file /etc/nginx/htpasswd;
# }
3.5 安装 Git
# Ubuntu
sudo apt-get update
sudo apt-get install -y git
# CentOS
sudo yum install -y git
# 验证
git --version
安装成功验证与常用命令
| 命令 | 说明 |
|---|---|
git --version |
查看 Git 版本 |
git config --global user.name "Name" |
设置全局用户名 |
git config --global user.email "email@example.com" |
设置全局邮箱 |
git clone https://github.com/user/repo.git |
克隆远程仓库 |
git status |
查看工作区状态 |
git add . |
添加所有改动到暂存区 |
git commit -m "message" |
提交暂存区改动 |
git push origin main |
推送本地提交到远程 main 分支 |
git pull origin main |
拉取远程 main 分支最新代码 |
密码/访问说明
**说明:**Git 本身无密码系统。访问远程仓库时使用 SSH 密钥或 HTTPS 密码/token 认证。 SSH 密钥配置:
ssh-keygen -t rsa -b 4096生成密钥对,将公钥添加到 Git 平台(GitHub/GitLab 等)。 **HTTPS 认证:**首次推送时输入用户名和密码(或使用 Personal Access Token)。
3.6 安装 Maven
# 1. 下载 Maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
# 2. 解压
sudo tar -zxvf apache-maven-3.9.8-bin.tar.gz -C /opt/
# 3. 配置环境变量
sudo tee -a /etc/profile.d/maven.sh <<'EOF'
export MAVEN_HOME=/opt/apache-maven-3.9.8
export PATH=$MAVEN_HOME/bin:$PATH
EOF
source /etc/profile.d/maven.sh
# 4. 验证
mvn -version
**加速国内 Maven 仓库:**修改
$MAVEN_HOME/conf/settings.xml,在<mirrors>中添加阿里云镜像:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
安装成功验证与常用命令
| 命令 | 说明 |
|---|---|
mvn -version |
查看 Maven 版本和 JDK 信息 |
mvn clean |
清理 target 目录 |
mvn compile |
编译源代码 |
mvn test |
运行单元测试 |
mvn package |
打包(生成 JAR/WAR) |
mvn install |
打包并安装到本地仓库 |
mvn clean install -DskipTests |
清理后打包安装,跳过测试 |
mvn dependency:tree |
查看项目依赖树 |
mvn spring-boot:run |
运行 Spring Boot 应用 |
密码/访问说明
**说明:**Maven 本身无密码系统。访问私有仓库时,在
~/.m2/settings.xml中配置服务器认证信息。 **配置仓库密码示例:**在<servers>节点下添加<server><id>...</id><username>...</username><password>...</password></server>。
四、各镜像验证 / 停止 / 常用命令速查总表
| 镜像 | 启动验证 | 停止 | 删除 | 查看日志 | 进入容器 |
|---|---|---|---|---|---|
| Docker | docker run hello-world |
sudo systemctl stop docker |
--- | journalctl -u docker |
--- |
| OpenJDK 8/17 | docker run --rm eclipse-temurin:17-jdk java -version |
docker stop openjdk17 |
docker rm openjdk17 |
docker logs openjdk17 |
docker exec -it openjdk17 bash |
| Python | docker run --rm python:3.12 python --version |
docker stop python |
docker rm python |
docker logs python |
docker exec -it python bash |
| MySQL | docker exec -it mysql mysql -uroot -p -e "SELECT 1;" |
docker stop mysql |
docker rm mysql |
docker logs mysql |
docker exec -it mysql bash |
| Redis | docker exec -it redis redis-cli ping |
docker stop redis |
docker rm redis |
docker logs redis |
docker exec -it redis sh |
| Elasticsearch | curl http://localhost:9200 |
docker stop elasticsearch |
docker rm elasticsearch |
docker logs elasticsearch |
docker exec -it elasticsearch bash |
| MongoDB | docker exec -it mongodb mongosh -u root -p --eval "db.adminCommand('ping')" |
docker stop mongodb |
docker rm mongodb |
docker logs mongodb |
docker exec -it mongodb bash |
| MinIO | curl http://localhost:9000/minio/health/live |
docker stop minio |
docker rm minio |
docker logs minio |
docker exec -it minio sh |
| Nacos | curl http://localhost:8848/nacos/v1/console/health/readiness |
docker stop nacos |
docker rm nacos |
docker logs nacos |
docker exec -it nacos bash |
| RabbitMQ | curl -u admin:admin http://localhost:15672/api/overview |
docker stop rabbitmq |
docker rm rabbitmq |
docker logs rabbitmq |
docker exec -it rabbitmq bash |
| RocketMQ | `docker logs rmqnamesrv | grep "boot success"` | docker stop rmqnamesrv rmqbroker |
docker rm rmqnamesrv rmqbroker rmqdashboard |
docker logs rmqnamesrv |
| Nginx | curl -I http://localhost |
docker stop nginx |
docker rm nginx |
docker logs nginx |
docker exec -it nginx bash |
4.1 各镜像特色常用命令
| 镜像 | 常用命令 |
|---|---|
| MySQL | docker exec mysql mysqldump -uroot -p mydb > backup.sql(备份) docker exec -i mysql mysql -uroot -p mydb < backup.sql(恢复) |
| Redis | docker exec -it redis redis-cli info(查看信息) docker exec -it redis redis-cli monitor(实时监控) |
| Elasticsearch | curl http://localhost:9200/_cluster/health(集群健康) curl http://localhost:9200/_cat/indices?v(查看索引) |
| MongoDB | docker exec -it mongodb mongosh -u root -p(进入 Shell) docker exec mongodb mongodump --out /data/backup(备份) |
| MinIO | docker exec -it minio mc alias set local http://localhost:9000 minioadmin minioadmin(配置 mc 客户端) |
| Nacos | 浏览器访问 http://localhost:8848/nacos(默认 nacos/nacos) |
| RabbitMQ | docker exec rabbitmq rabbitmqctl list_queues(查看队列) |
| RocketMQ | 浏览器访问 http://localhost:8080(Dashboard) |
| Nginx | docker exec nginx nginx -s reload(重载配置) docker exec nginx nginx -t(检查配置) |
五、常见问题与排错
5.1 Docker 常见问题
| 问题 | 解决方案 |
|---|---|
Cannot connect to the Docker daemon |
sudo systemctl start docker 启动 Docker 服务 |
| 拉取镜像超时 | 配置镜像加速器(见 1.4 节) |
| 端口被占用 | lsof -i :端口号 查看占用进程,或更改映射端口 |
| 容器启动后立即退出 | docker logs 容器名 查看日志排查原因 |
permission denied |
将当前用户加入 docker 组:sudo usermod -aG docker $USER |
| ES 启动报 vm.max_map_count | sudo sysctl -w vm.max_map_count=262144 并写入 /etc/sysctl.conf |
5.2 Ubuntu vs CentOS 命令对照
| 操作 | Ubuntu (apt) | CentOS (yum/dnf) |
|---|---|---|
| 更新软件包索引 | sudo apt-get update |
sudo yum makecache |
| 安装软件包 | sudo apt-get install pkg |
sudo yum install pkg |
| 卸载软件包 | sudo apt-get remove pkg |
sudo yum remove pkg |
| 搜索软件包 | apt-cache search pkg |
sudo yum search pkg |
| 查看已安装 | `dpkg -l | grep pkg` |
| 清理缓存 | sudo apt-get clean |
sudo yum clean all |
5.3 常用运维命令速查
# Docker 相关
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(含已停止)
docker images # 查看所有镜像
docker logs <容器名> # 查看容器日志
docker exec -it <容器名> bash # 进入容器
docker stop <容器名> # 停止容器
docker rm <容器名> # 删除容器
docker system prune # 清理无用镜像/容器/网络
# 端口与防火墙
sudo ufw allow 3306/tcp # Ubuntu 防火墙放行端口
sudo firewall-cmd --add-port=3306/tcp --permanent # CentOS 防火墙
sudo firewall-cmd --reload
# 查看端口占用
sudo lsof -i :8080
sudo netstat -tlnp | grep 8080
如果本文对你有帮助,欢迎点赞、收藏和评论交流!后续会持续更新更多运维实战内容。