目标
本文记录一套企业开发中常见的 Linux 服务器搭建流程:
使用 VMware Workstation 创建 Linux 虚拟机
安装纯命令行 Linux 系统
配置 NAT 模式静态 IP
安装 Docker 和 Docker Compose
使用 Docker Compose 部署 MySQL、Redis
本地虚拟机开发完成后,迁移部署到云服务器 本文适合用于日常开发环境、测试环境、个人项目部署练习。
一、系统选择 企业里常见的 Linux 服务器系统主要有:
Rocky Linux / AlmaLinux:兼容 RHEL,适合企业服务器环境
Ubuntu Server LTS:社区活跃,资料多,云服务器常见
Debian:稳定,轻量
本文推荐使用:
Rocky Linux 9 Minimal
原因:
- 接近企业生产环境
- 纯命令行安装方便
- 和 CentOS / RHEL 系列命令习惯一致
- 适合学习服务器部署
二、下载 Linux 镜像
进入 Rocky Linux 官网下载 ISO:
https://rockylinux.org/download
选择:
Rocky Linux 9.x x86_64 Minimal ISO
如果觉得太慢就用镜像,点击就能下载
Minimal ISO 是最小化安装镜像,默认没有图形界面,适合服务器使用。
三、VMware 创建虚拟机
打开 VMware Workstation,创建新的虚拟机。
建议配置:
类型:典型
系统:Linux
版本:Red Hat Enterprise Linux 9 64-bit
CPU:2 核 内存:2GB / 4GB
磁盘:40GB 起步
网络:NAT 模式
镜像:选择 Rocky Linux Minimal ISO开发环境建议:
CPU:2 核 内存:4GB 磁盘:50GB
如果后面要跑多个容器,比如 MySQL、Redis、Nginx、Java 项目,建议内存至少 4GB。



四、VMware NAT 网络说明
我这里使用的是 VMware NAT 模式,子网是:
192.168.6.0/24
常见配置如下:
网段:192.168.6.0
子网掩码:255.255.255.0
网关:192.168.6.2
虚拟机 IP:192.168.6.100
DNS:8.8.8.8 / 114.114.114.114





注意:
VMware NAT 模式下,虚拟机可以访问外网,宿主机也可以访问虚拟机。
但是外部网络一般不能直接访问虚拟机,除非做端口转发。
五、安装 Rocky Linux
(选第一个)


(这边只要把ROOT密码设置一下就好,如果你自己用,用户可加可不加)

(点击安装)
安装时重点选择:
Installation Destination:选择磁盘
Root Password:设置 root 密码
User Creation:可选,建议创建普通用户
Software Selection:Minimal Install
安装完成后重启,进入纯命令行界面。
登录:
root
如果你直接在虚拟机里面是不能粘贴,你宿主机的数据的,所以你要下一个远程连接的软件,我这边推荐的是finalshell(FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.6.3,更新日期2025.5.21 - FinalShell官网)
这边连接软件里面的提示
旁边那个文件夹点一下,按流程就可以连接了,但是你还有可能发现一切都正常(密码,虚拟机状态),那你
就输入
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl restart sshd
然后再
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
最后重启一下就能解决了
六、配置静态 IP
Rocky Linux 9 使用 NetworkManager 管理网络。
先查看网卡名称:
nmcli device
假设网卡名是:
ens160
查看当前连接名:
nmcli connection show
假设连接名也是 ens160,配置静态 IP:
nmcli connection modify ens160 ipv4.addresses 192.168.6.99/24
nmcli connection modify ens160 ipv4.gateway 192.168.6.2
nmcli connection modify ens160 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli connection modify ens160 ipv4.method manual
nmcli connection up ens160
如果连接名不是 ens160,要替换成实际名称。
查看 IP:
ip addr
测试网络:
ping www.baidu.com
如果能 ping 通,说明网络正常。
七、基础环境初始化
更新系统:
dnf update -y
安装常用工具:
dnf install -y vim wget curl net-tools lrzsz unzip tar git bash-completion
查看系统版本:
cat /etc/os-release
关闭 SELinux,开发环境可以关闭,生产环境建议谨慎:
vim /etc/selinux/config
修改:
SELINUX=disabled
重启:
reboot
查看 SELinux 状态:
getenforce
八、防火墙配置
查看防火墙状态:
systemctl status firewalld
开发环境可以选择关闭:
systemctl stop firewalld
systemctl disable firewalld
如果不想关闭,可以开放端口:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
生产环境建议不要直接关闭防火墙,而是按需开放端口。
九、安装 Docker
1. 安装依赖工具
dnf install -y yum-utils
2. 添加 阿里云 Docker 稳定源(官方源国内会超时)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. 重建缓存(避免安装失败)
dnf clean all && dnf makecache
4. 安装 Docker 引擎(完整版)
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker
6. 配置 国内镜像加速(必须加,否则拉镜像慢 / 失败)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://ccr.ccs.tencentyun.com"
]
}
EOF
docker info
7. 重启 Docker 使加速生效
systemctl daemon-reload
systemctl restart docker
8. 查看版本(验证安装成功)
docker version
docker compose version
十一、创建 Docker Compose 项目目录
建议统一放在:
mkdir -p /opt/docker
cd /opt/docker
创建 MySQL 和 Redis 目录:
mkdir -p mysql/data mysql/conf mysql/logs
mkdir -p redis/data redis/conf
(以后如果想加其他的中间件都先cd /opt/docker
然后
# Nginx
mkdir -p nginx/conf nginx/html nginx/logs
# RabbitMQ
mkdir -p rabbitmq/data rabbitmq/conf rabbitmq/logs
# MinIO(文件存储)
mkdir -p minio/data minio/conf
# Grafana 监控
mkdir -p grafana/data
# Jenkins
mkdir -p jenkins/data
)
十二、准备 MySQL 配置文件
创建 MySQL 配置:
vim /opt/docker/mysql/conf/my.cnf
内容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-time-zone=+8:00
max_connections=500
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

基本 i 插入 esc退出 :wq保存退出要知道
十三、准备 Redis 配置文件
创建 Redis 配置:
vim /opt/docker/redis/conf/redis.conf
内容:
bind 0.0.0.0
protected-mode no
port 6379
requirepass 123456
appendonly yes
dir /data
注意:
开发环境可以这样配置,生产环境不要直接暴露 Redis 到公网。
十四、编写 docker-compose.yml
cd /opt/docker
vim docker-compose.yml
内容:直接复制粘贴这个
tee docker-compose.yml <<-'EOF'
services:
mysql:
image: mysql:8.0
container_name: mysql8
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: app_db
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql/logs:/logs
command: --default-authentication-plugin=mysql_native_password
networks:
- dev-net
redis:
image: redis:7
container_name: redis7
restart: always
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf
networks:
- dev-net
networks:
dev-net:
driver: bridge
EOF
十五、启动容器
进入目录:
cd /opt/docker
启动:
docker compose up -d
这边经常会发生镜像源域名解析失败,
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://ccr.ccs.tencentyun.com"
]
}
EOF
systemctl daemon-reloadsystemctl restart docker
cd /opt/dockerdocker compose pull
docker compose up -d
按上面的操作换源就好或者到这里面去找
https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea
1、启动容器
docker compose up -d
-d 后台静默运行。
2、查看运行状
docker compose ps
STATUS 显示 Up 就是正常启动。
查看日志:
docker logs mysql8
docker logs redis7
十六、测试 MySQL
进入 MySQL 容器:
docker exec -it mysql8 mysql -uroot -p
输入密码:
123456
执行 SQL:
show databases;
如果能看到数据库,说明 MySQL 启动成功。
十七、测试 Redis
进入 Redis 容器:
docker exec -it redis7 redis-cli
认证:
auth 123456
测试:
set name test
get name
如果能正常返回,说明 Redis 启动成功。
十八、宿主机连接虚拟机服务(用之前的远程连接软件也行)
虚拟机 IP:
192.168.6.100
宿主机连接 MySQL:
Host:192.168.6.100 Port:3306 User:root Password:123456
宿主机连接 Redis:
Host:192.168.6.100 Port:6379 Password:123456
如果连接失败,排查:
docker ps ss -tunlp
firewall-cmd --list-ports
十九、常用 Docker 命令
查看容器:
docker ps docker ps -a
启动容器:
docker start mysql8
停止容器:
docker stop mysql8
删除容器:
docker rm mysql8
查看日志:
docker logs -f mysql8
进入容器:
docker exec -it mysql8 bash
启动 Compose:
docker compose up -d
停止 Compose:
docker compose down
重启 Compose:
docker compose restart
二十、迁移到云服务器(Docker 标准迁移法・最简版)
本地虚拟机部署完成后,迁移到云服务器只需要迁移 2 样东西:
/opt/docker/docker-compose.yml- 数据库备份文件:
app_db.sql
不需要迁移:
- mysql/data
- mysql/conf
- redis/data
- redis/conf
更推荐迁移数据库备份,而不是直接复制 MySQL data 目录(跨环境容易启动失败)。
二十一、MySQL 数据备份
在虚拟机执行备份命令(导出你的业务数据库):
docker exec mysql8 mysqldump -uroot -p123456 --databases app_db > /opt/docker/app_db.sql
如果要备份所有数据库(含系统库):
docker exec mysql8 mysqldump -uroot -p123456 --all-databases > /opt/docker/all.sql
二十二、Redis 数据备份
Redis 已开启 AOF 持久化:
appendonly yes
手动触发一次数据落地(确保数据最新):
docker exec redis7 redis-cli -a 123456 save
Redis 数据文件自动保存在:
/opt/docker/redis/data
迁移时不需要拷贝 Redis 数据目录,重新启动容器后会自动重建。
二十三、上传文件到云服务器
假设云服务器 IP:1.2.3.4
推荐只上传 2 个核心文件(最干净、最安全):
scp /opt/docker/docker-compose.yml root@1.2.3.4:/opt/docker/
scp /opt/docker/app_db.sql root@1.2.3.4:/opt/docker/
不推荐整目录上传,冗余文件太多。
二十四、云服务器初始化
云服务器推荐系统:Rocky Linux / Ubuntu Server
登录:
ssh root@1.2.3.4
安装 Docker 和 Docker Compose(流程和本地虚拟机完全一样)。
创建目录:
mkdir -p /opt/docker
cd /opt/docker
上传上面两个文件即可。
二十五、云服务器启动容器
进入目录:
cd /opt/docker
启动:
docker compose up -d
查看:
docker ps
所有配置、数据卷、密码、端口自动完成。
二十六、恢复 MySQL 数据
上传 app_db.sql 后执行恢复:
cat /opt/docker/app_db.sql | docker exec -i mysql8 mysql -uroot -p123456
恢复完成后进入 MySQL 验证:
docker exec -it mysql8 mysql -uroot -p
show databases;
use app_db;
show tables;
二十七、云服务器安全组配置
必须在云厂商控制台开放端口:
- 22(SSH)
- 80(HTTP)
- 443(HTTPS)
- 3306(MySQL)
- 6379(Redis)
- 8080(Java 应用)
注意: 生产环境不建议把 3306、6379 暴露到公网 更安全做法:
- MySQL / Redis 只允许内网访问
- 应用服务器在内网访问数据库
- 本地管理使用 SSH 隧道
- Redis 必须设置密码
- MySQL 使用强密码
- 禁止 root 远程直接登录
二十八、生产环境建议(这个真的是重点啊,不要轻视安全问题,不然很容易就被黑了,不是开玩笑)
开发环境可以简单一些,但云服务器建议注意:
- 不要使用弱密码,比如 123456
- MySQL 和 Redis 不要直接暴露公网
- Docker Compose 文件里的密码不要随便上传到公开仓库
- 使用云服务器安全组限制来源 IP
- 定期备份 MySQL
- 重要服务加上 restart: always
- 日志要限制大小,避免磁盘被打满
- 建议使用 Nginx 做统一入口
- HTTPS 建议使用 Nginx + Let's Encrypt
- 数据目录和配置目录要分开管理
二十九、最终目录结构
最终 /opt/docker 目录大概如下:
/opt/docker
├── docker-compose.yml # 核心编排文件
├── app_db.sql # 数据库备份
├── mysql # 自动创建
│ ├── conf
│ ├── data
│ └── logs
└── redis # 自动创建
├── conf
└── data
三十、总结
本文完成了一套从本地虚拟机 → 云服务器的标准 Docker 部署流程:
- VMware 创建 Linux 虚拟机
- NAT 模式配置静态 IP
- 初始化 Linux 基础环境
- 安装 Docker & Docker Compose
- 使用 Docker Compose 一键部署 MySQL + Redis
- 备份数据库,迁移到云服务器
- 云服务器一键启动容器
- 恢复数据库
- 配置安全组与安全策略
Docker 核心思想:一次配置,处处运行。 只需要维护 docker-compose.yml,即可在任何 Linux 环境快速重建整套环境。
